:使用grep來查找內容的文件和移動他們,如果他們我使用grep來生成文件列表我需要移動匹配
grep -L -r 'Subject: \[SPAM\]' .
我怎麼能這個列表傳遞給mv命令和把文件移動到別的地方?
:使用grep來查找內容的文件和移動他們,如果他們我使用grep來生成文件列表我需要移動匹配
grep -L -r 'Subject: \[SPAM\]' .
我怎麼能這個列表傳遞給mv命令和把文件移動到別的地方?
grep -L -Z -r 'Subject: \[SPAM\]' . | xargs -0 -I{} mv {} DIR
的-Z是指用零(\ 0)的文件名後輸出(所以空間不能用作定界符) 。
xargs -0
表示將\ 0解釋爲分隔符。
然後
-I{} mv {} DIR
手段代替{}
與文件名,所以你得到mv filenames DIR
。
您可以通過使用 grep ...將結果傳遞給下一個命令。 xargs mv {}目的地
查看man xargs瞭解更多信息。
有幾種方法,但這裏是一個緩慢的,但故障安全之一:
IFS=$'\n'; # set the field separator to line break
for $mail in $(grep -L -r 'Subject: \[SPAM\]' .); do mv "$mail" your_dir; done;
IFS=' '; # restore FS
這種替代的作品,其中xargs的沒有速效:
grep -L -r 'Subject: \[SPAM\]' . | while read f; do mv "$f" out; done
這是我的Fedora Core 12使用:
grep -l 'Subject: \[SPAM\]' | xargs -I '{}' mv '{}' DIR
也許這將工作:
mv $(grep -l 'Subject: \[SPAM\]' | awk -F ':' '{print $1}') your_file
工作完美的我:
將包含文字MYSTRINGTOSEARCH的文件移動到目錄MYDIR。
找到。 -type f -exec grep -il'MYSTRINGTOSEARCH'{} \; -exec mv {} MYDIR/\;
我希望這有助於
這是幫助我:
grep -lir 'spam' ./ | xargs mv -t ../spam
當然,我已經所需的文件夾中(這就是爲什麼./
),並將它們轉移到鄰近的文件夾。但是您可以將它們更改爲任何路徑。
我不知道爲什麼接受的答案不起作用。此外,我沒有空格和文件名中的特殊字符 - 也許這不起作用。
這裏被盜:Grep command to find files containing text string and move them
mv `grep -L -r 'Subject: \[SPAM\]' .` <directory_path>
假定grep的你寫的回報你期待中的文件路徑。
謝謝,首都 - 我應該小寫我的xargs – user17582 2008-09-18 12:49:08