我正在使用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
.
此替代方法适用于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
这对我有所帮助:
grep -lir 'spam' ./ | xargs mv -t ../spam
当然,我已经在必需的文件夹(这就是为什么./
)并将它们移动到邻居文件夹.但您可以将它们更改为任何路径.
我不知道为什么接受的答案没有用.此外,我在文件名中没有空格和特殊字符 - 也许这不起作用.
在这里被盗:Grep命令查找包含文本字符串的文件并移动它们