Tüm dosyaları çıktıyı bir komuttan nasıl taşırım?


22

İçinde Ekler sözcüğü olmayan dosyaları bulmak için bu grep komutunu kullanıyorum.

grep -L -- Attachments *

O komuttan çıkan tüm dosyaları taşımak istiyorum. Bunu bash da nasıl yaparım? Boru mu kullanırım? Dolu bir betiğin içinde / ardından ifadesinde daha fazla wordy kullanabilir miyim?

Yanıtlar:


18

Dosya adlarında yeni satırlar, sekmeler, boşluklar veya bir eşleşme oluşturabilecek glob kombinasyonları varsa hiçbirinin bilmediğini biliyorsanız, bu durum bir kerede daha kolay olabilir:

mv $(grep -L Attachments *) dest_dir

36

Yapmak istediğiniz şey bir pipet ve greps -Zseçeneği kullanmak:

GNU grep ve mv kullanımı

grep -LZ -- Attachments * | xargs -0 mv -t target_directory

-Zİle birlikte xargs -0özel karakterler ile tutamaklar herhangi dosya.

BSD grep ve mv'yi kullanma (MacOS X'te olduğu gibi)

grep -L --null -- Attachments * |
while IFS= read -r -d "" file; do 
    mv "./$file" target_directory
done

BSD günü, grep -Zaraçlar sıkıştırması , grep --nullBSD ve GNU hem çalışır. BSD mvseçeneğinden yoksun-t

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.