Inilah yang saya gunakan di Fedora Core 12:
grep -l 'Subject: \[SPAM\]' | xargs -I '{}' mv '{}' DIR
Jika Anda ingin mencari dan memindahkan file yang tidak sesuai dengan pola Anda (pindahkan file yang tidak mengandung 'Subject \[SPAM\]'
dalam contoh ini) gunakan:
grep -L -Z -r 'Subject: \[SPAM\]' . | xargs -0 -I{} mv {} DIR
-Z berarti output dengan nol (\0) setelah nama file (jadi spasi tidak digunakan sebagai pembatas).
xargs -0
berarti menafsirkan \0 menjadi pembatas.
-L berarti menemukan file yang tidak cocok dengan polanya. Ganti -L
dengan -l
jika Anda ingin memindahkan file yang cocok dengan pola Anda.
Lalu
-I{} mv {} DIR
berarti ganti {}
dengan nama file, jadi Anda mendapatkan mv filenames DIR
.
Inilah yang membantu saya:
grep -lir 'spam' ./ | xargs mv -t ../spam
Tentu saja, saya sudah berada di folder wajib (itu sebabnya ./
) dan memindahkannya ke folder tetangga. Namun Anda dapat mengubahnya ke jalur apa pun.
Saya tidak tahu mengapa jawaban yang diterima tidak berhasil. Saya juga tidak memiliki spasi dan karakter khusus dalam nama file - mungkin ini tidak akan berhasil.
Dicuri di sini:perintah Grep untuk menemukan file yang berisi string teks dan memindahkannya
Alternatif ini berfungsi saat xargs tidak tersedia:
grep -L -r 'Subject: \[SPAM\]' . | while read f; do mv "$f" out; done