Bir klasördeki 1 MB'den büyük tüm dosyaları silmek istediğimi varsayalım.
$ find . -size +1M | xargs -0 rm
Bu, adlarında boşluk olan dosyaları silmez. Bu yüzden gönderdiği tüm argümanları alıntılamasını istiyorum rm
. Eğer find
verir Some report.docx
o geçmelidir "Some report.docx"
için rm
.
Bunu nasıl yapabilirim?
Daha genel olarak, bkz. Kabuk betiğim neden boşlukta veya diğer özel karakterlerde boğuluyor?
—
Gilles 'SO- kötü olmayı bırak'
xargs -d$'\n'
Sınırlayıcıyı yalnızca yeni satırlarla sınırlamak için kullanın (boşluklar değil; tırnak işaretleri vb. Özel olarak işlemez - bir GNU sisteminde kontrol ettim) - stackoverflow.com/a/33528111/94687'de
xargs
. Wiki anlaşılacağı gibi Ayrıca kullanmayınxargs
geçirmeden-print0
içinfind
.