Bir dosyadaki metin nasıl temizlenir?


71

Bir metin dosyasında bulunan metni açmadan nasıl temizleyebilirim?

Örneğin, hello.txtiçindeki bazı metin verilerinde olduğu gibi bir dosyam var ve bu dosyadaki toplam metni açmadan nasıl temizleyebilirim ?

Bununla nano, Gedit vb. Herhangi bir editör kullanmamayı kastediyorum.


1
Dosya açarak ne demek istiyorsun? Şimdiye kadar verilen tüm cevaplarda dosya hala kabuk tarafından yazılmak üzere açılacaktır. Sonunda kabuk başka herhangi bir program gibi.
Jeff,

@Jeff nano, gedit vs. gibi bir şey kullanmıyor
saat

Hus787 Eğer düşünürseniz oraya gitmeyi yazmadım, bu yüzden soruma ilginizi memnuniyetle kabul ediyorum.
rɑːdʒɑ

Jeff'in yorumuyla aynı fikirdeyim ... Ben de * herhangi bir metin editörü veya yeniden yönlendirme kullanıyor olsanız, dosya akışının buna yazmak için açılması gerektiğine * inanıyorum. ( * konuyla ilgilenmesi için bağlantı öneren herkese teşekkür ederiz )
kesin

Yanıtlar:


139

Sadece CTRL+ ALT+ ile terminalinizi açın Tve yazın

 > hello.txt

bu kadar, o dosyadaki verileriniz bile açılmadan temizlenir.

Örnek:

görüntü tanımını buraya girin


5
Teknik olarak dosya açılacaktır. Sadece bir editörde değil.
John Dibling,

2
@JohnDibling aslında bu yönlendirme, dosyanın burada açılmadığını düşünüyorum. Yönlendirmede İçerik, stdoutvarsa mevcut dosyanın üzerine yazar. Bu durumda hiçbir şey yok stdout. Bu nedenle, dosyanın geçersiz kılınması üzerine yazılmış, esas olarak varsa önceki verileri siliyor.
souravc

Bu komutu geri almanın bir yolu var mı?
Rao

@Rao,> 10GB gibi büyükse, olabilir. Ama ne kadar emin değiliz.
rʒɑdʒɑ

28

Bir dosyayı kesmenin en kolay yolu, no-op komutunun ( :) kabuğunun çıktısını silmek istediğiniz dosyaya yönlendirmektir.

: > hello.txt

2
Onun muhtemelen en kolay (sadece göreceli değil >) ama bu son derece inceledi question..here ait cevapların hiçbirinde söz edilmemiştir neden sure..i mucize hızlı, +1 almak ..
heemayl

13

Ben de rajagenupula'nın cevabı gibi yönlendirmeyi kullanacağım. Fakat biraz daha esneklik var. Bir terminal aç ve yaz,

cat > hello.txt

Ve Ctrl+ tuşlarına basın C. Bir önceki dosyayı silecektir. Bu kadar istiyorsan sorun değil.

İsterseniz dosyayı sildikten sonra daha fazlasını yapabilirsiniz. Bu sayede sadece bir dosyayı açmadan silemezsiniz, aynı zamanda dosyaya uygun biçimlendirme ile birkaç satır da yazabilirsiniz. Dosyayı sildikten sonra "Ubuntu en iyi işletim sistemidir" yazmak istediğinizi varsayalım.

cat > hello.txt
Ubuntu is the 
best OS

Sonra Ctrl+ tuşlarına basın C. Şimdi önceki dosya silinir. Aynı zamanda kelimeler onları koyduğum iki satırda var.

Örneğe bakınız:

görüntü tanımını buraya girin


Hey, cevap verdiğiniz için teşekkür ederim. çok az ama hemen sonra yapılacak işler de ama yine de ilginç. + 1
rɑːdʒɑ

>yönlendirme için duruyor. cat > fileyazacak stdoutvarolan herhangi dosyanın üzerine yazarak, dosya.
souravc

10

Bunu her zaman günlük dosyaları ile yapmak zorundayım. Bulduğum en kolay yolu aşağıdaki komutu ile:

cat /dev/null > hello.txt

Bu, dosyanın içeriğinin alaşımını siler ve bir düzenleyicide açmak zorunda kalmadan boş bir dosyayla bırakır, herhangi bir şeyi metin seçer. Daha spesifik olarak, dosyanın içeriğini "/ dev / null" veya başka bir şeyle değiştirmektir. Aslında oldukça kaygan.

Tek uyarı, şu anda giriş yapmış olduğunuz kullanıcının adı geçen dosyaya yazma izninin olması gerektiğidir.


Cevap için teşekkür ederim. Daha güzel bir görünüm böylece bir örnek ekleyiniz + 1.
rɑːdʒɑ

5

Hello.txt adında bir dosya oluşturulduysa ve bazı metinler sağlandıysa, ctrl+ alt+ terminalindeki aşağıdaki komut hello.txt dosyasındaki ttüm metni kaldırır ,

echo "" > hello.txt

görüntü tanımını buraya girin


Cevap verdiğin için teşekkürler, +1. daha güzel görünmek için biraz örnekle genişletin lütfen.
23'te

3

Diğer bir yaklaşım - dosyayacp/dev/null

xieerqi:$ cat testFile.txt                                                                                        
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 83100492  26269816  76% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914492        4   2914488   1% /dev
tmpfs             585216     1152    584064   1% /run
none                5120        0      5120   0% /run/lock
none             2926072    98096   2827976   4% /run/shm
none              102400       76    102324   1% /run/user

xieerqi:$ cp /dev/null testFile.txt                                                                               

xieerqi:$ cat testFile.txt

xieerqi:$ 

sen harika bir adamsın
Yasser Sinjab,

2

En kısa cevap değil ama ...

Bu cevap Süper Kullanıcı'dan bir başkasına dayanmaktadır . En kısa bash komutu olmasa da, truncateortalama yeniler için en okunaklı olanı:

$ echo Hello > Hello.txt
$ echo World! >> Hello.txt
$ cat Hello.txt
Hello
World!
$ truncate -s 0 Hello.txt
$ ll Hello.txt
-rw-rw-r-- 1 rick rick 0 Mar 20 17:32 Hello.txt

truncateBurada komutla kullanılan parametreler :

  • "-s" boyutu ayarla
  • "0" boyut sıfır olacak

İlk 10.000 bayt dışındaki her şeyi temizle

Bunun bir avantajı, truncateyalnızca sıfıra değil ne kadar tutacağınıza karar verebilmenizdir:

$ truncate -s 10000 Hello.txt

... ilk 10.000 bayttan sonra her şeyi kesecek. Bir program çıldırdıysa ve birçok Megabayt veriyi küçük bir günlük dosyasına bıraktıysa bu yararlı olabilir:

  • truncateKomutu normal büyük 10K büyüklüğünde çalıştırın
  • Dosyayı metin editörünüzle açın ve End
  • Ait PgUpolmayan kalan baytları vurgulayın ve silin (genellikle ASCII çöp karakterleri tarafından tanınır).

0

Bu yüzden, buna cevap vermek için çok fazla yönlendirmenin kullanıldığını görüyorum;)

Combo ile biraz farklı bir yaklaşım: rm & touch

rm hello.txt && touch hello.txt

( evet ... yine başka bir hile! )

Böylece bu komut combo ile hello.txt dosyası açılmadı ve sonunda hala içeriği temizlenmiş olan hello.txt dosyasını aldınız. Tıpkı istediğin gibi!


4
İyi bir 'hile' değil bence, dosya izinlerini değiştirebilir ...
Parto

2
Bu silinmiş daha iyi olabilir. Sorunlara yol açabilir: izinler değişebilir. Bir günlük dosyasına yapılırsa, günlüğün orada olmasını ve yazılabilir olmasını bekleyen hizmetten beklenmeyen davranışlara yol açabilir.
Rinzwind

Bu cevap bir ilgi noktası olarak en iyi yol olmasa da: Sahip / izin ile ilgili sorunları düzeltmek için önce mülkiyeti ve izinleri kontrol edin, ardından şunu ekleyin (gereken şekilde ayarlayın): && sudo chown user: group hello.txt && sudo chmod 644 hello.txt
Chris

inode numarası silinecek. yeni bir inode numarası oluşturulacak. kötü bir fikir.
Dipankar Nalui

0
vi filename -c ':1,$d' -c ':wq'

Sahip olduğum özel izinlerden dolayı benim için en iyisini yaptım


Sahip olduğunuz problemi detaylandırarak bu cevabı geliştirebilirsiniz. Ayrıca programın vine olduğunu ve çeşitli parametrelerin ve argümanların ne yaptığını da açıklayabilirsiniz .
WinEunuuchs2Unix
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.