it-swarm-tr.com

rm'ye grep çıkışı vermek

grep çıkışını rm 'a aktarmaya çalışıyorum, ancak işe yaramaz şeyler çıkarıyor. rm için herhangi bir anahtar gerekli mi? Veya rm doğrudan regexp sağlayabilir mi?

ls | grep '^\[Daruchini'| rm

rm: eksik işlenen Daha fazla bilgi için rm --help komutunu deneyin.

50
CodeBladeRunner

Standart girişi xargs için bağımsız değişkenlere dönüştürmek için rm kullanmanız gerekir.

$ ls | grep '^Dar' | xargs rm

(Dosya adlarındaki özel karakterlere dikkat edin; GNU grep ile, tercih edebilirsiniz

$ ls | grep -Z '^Dar' | xargs -0 rm

)

Ayrıca, Shell regexps kullanmasa da, bu basit bir modeldir:

$ rm Dar*

(bu arada, daha fazla uykuya ihtiyacım olduğunu düşünüyorum.)

61
geekosaur

ls çıktısını ayrıştırmayın .

Burada, Shell'in istediğiniz dosyaları filtrelemesini sağlamak çok basittir. rm komutunu değil, Dar* Desenini genişleten Kabuk olduğunu unutmayın. Kabuk tarafından gerçekleştirilen desen genişletmesine globbing denir.

rm Dar*

Daha karmaşık durumlarda, find komutuna bakın.

grep çıktısını boşluk yerine satırsonu ile sınırlamak istiyorsanız, bunu xargs ile -d seçeneği.

$ ls | grep '^Dar' | xargs -d '\n' rm

( b soruda açıklandığı gibi)

3
mherzl

Çıktıyı argüman olarak iletmek için, xargs'a aşina olmadığım için while döngüsü kullanma eğilimindeyim.

ls | grep '^Dar' | while read line; do rm "$line";done;
2
Mitms

Catalina 10.15.3'te, zsh ile, yeni satırlarla ve beyaz boşluklarla başa çıkmayı bulduğum yol şuydu:

 Sudo find / | grep -i 'yourString' | tr '\n' '\0' | xargs -0 -n1 rm -r 

Başka bir deyişle, "rm -0" ile kaldırmadan önce boşluk olmadan yeni satırları çevirerek (tr\n -\0).

Ayrıca, her zaman 'find' + 'grep -i' kullanıyorum çünkü 'find -iname' bazen hiçbir şey çıkarmaz.

Son bir not: 'yourString' ile eşleşen dosya ve klasörleri bulur ve kaldırır. Yalnızca dosyalar için "find -type f" belirtin ve sonra rm için "-r" seçeneği işe yaramaz.

0
YvUh

Benim için en iyi komut:

find ./Daruchini* -exec rm {}\;
0
Bodale