:使用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