当前位置:  开发笔记 > 编程语言 > 正文

使用grep查找文件中的内容,如果匹配则移动它们

如何解决《使用grep查找文件中的内容,如果匹配则移动它们》经验,为你挑选了4个好方法。

我正在使用grep生成我需要移动的文件列表:

grep -L -r 'Subject: \[SPAM\]' .

如何将此列表传递给mv命令并将文件移动到其他位置?



1> daveb..:
grep -L -Z -r 'Subject: \[SPAM\]' . | xargs -0 -I{} mv {} DIR

-Z表示在文件名后输出零(\ 0)(因此空格不用作分隔符).

xargs -0

意味着将\ 0解释为分隔符.

然后

-I{} mv {} DIR

意味着{}用文件名替换,所以你得到mv filenames DIR.


不应该是-l而不是-L?
谢谢,首都 - 我应该在我的xargs上小写
我认为提问者试图在没有[垃圾邮件]主题的情况下查找文件并移动它们以便保持这是正确的答案.是的,但是...... -l可能是默认值.

2> 小智..:

此替代方法适用于xargs不可用的情况:

grep -L -r 'Subject: \[SPAM\]' . | while read f; do mv "$f" out; done



3> 小智..:

这是我在Fedora Core 12中使用的:

grep -l 'Subject: \[SPAM\]' | xargs -I '{}' mv '{}' DIR



4> vladkras..:

这对我有所帮助:

grep -lir 'spam' ./ | xargs mv -t ../spam

当然,我已经在必需的文件夹(这就是为什么./)并将它们移动到邻居文件夹.但您可以将它们更改为任何路径.

我不知道为什么接受的答案没有用.此外,我在文件名中没有空格和特殊字符 - 也许这不起作用.

在这里被盗:Grep命令查找包含文本字符串的文件并移动它们

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有