0

我必须恢复邮件存档;数以千计的 .eml 文件。

我想运行一个“查找”命令,它将:

  1. 查找特定字符串
  2. 如果找到,请将文件复制到单独的文件夹中。

任何快速帮助将不胜感激!

4

2 回答 2

3

我建议使用递归grep以及xargs

grep "the string I want to find" -r --include=\*.eml -l -Z ROOTDIR | xargs -0 cp -t TARGETDIR

这将在目录.eml下的所有文件中搜索ROOTDIR所需的字符串并将它们移动到目录TARGETDIR中。-Zingrep-0inxargs确保即使是带有古怪字符的文件名也能正常工作。

编辑:更改mvcp

于 2012-11-12T16:27:28.187 回答
1

我喜欢亚当的回答,但如果你想使用find,你可以做类似的事情

find DIR -name '*.eml' -exec sh process.sh {} \;

哪里process.sh看起来像

SEARCH='Doe'
DEST='..'
s=$(grep "$SEARCH" "$1")
if [ "$s" != '' ] ; then
    cp "$1" "$DEST"
fi
于 2012-11-12T16:38:18.190 回答