Diğer ahbapların daha önce de bahsettiği gibi, xargs arkadaşın. Bu gerçekten güçlü bir araç ve bunu açıklamaya çalışacağım ve ortak bir sorun için bir çözüm sunacağım.
Xargs'ın yaptığı şey, girişten bir satır almak ve girişi başka bir komuta eklemek, girişteki her satır için diğer komutu yürütmektir. Yani yazarak locate foobar | xargs rm -f
bulup komutunun çıktısı alınacaktır ucuna yamalı bir rm -f
komuta ve ürettiği her satır için idam locate foobar
.
Yakaladım:
Peki ya satır (lar) ınızda locate tarafından döndürülen boşluklar varsa? Bu rm -f
komut rm'ye iletilen argümanların dosya olması gerektiğinden (-r anahtarını kullanmadığınız sürece) ve boşluk içeriyorsa bir dosya yolunun kaçması veya alıntılanması gerektiği için komutu kıracaktır.
xargs , girdiyi yerine eklemek yerine aşağıdaki komuta değiştirmek için -i anahtarını sağlar . Bu yüzden öneriyi
locate foobar | xargs -ixxx rm -f 'xxx'
artık yalnızca locate tarafından döndürülen dosya adları kesme işaretleri içeriyorsa bozulacaktır.
Qbi ile hemfikirim, rm -f kullanmaya dikkat etmelisin ! Xargs için -p bayrağını kullanın veya xargs'a beslemeden önce locobar'ı kendiniz çalıştırın veya -f'yi rm'den bırakın.
locate foobar | xargs -p -ixxx rm -f 'xxx'
rm -i
fooBar'ı bulun ``