我必须恢复邮件存档;成千上万的.eml文件。
我想运行一个'find'命令:
任何快速帮助将不胜感激!
答案 0 :(得分:3)
我建议使用递归grep
和xargs
:
grep "the string I want to find" -r --include=\*.eml -l -Z ROOTDIR | xargs -0 cp -t TARGETDIR
这将搜索.eml
目录下的所有ROOTDIR
文件以获取所需的字符串,并将它们移动到目录TARGETDIR
。 -Z
中的grep
和-0
中的xargs
可确保即使是具有古怪字符的文件名仍可正常使用。
修改:将mv
更改为cp
答案 1 :(得分:1)
我喜欢Adam的答案,但是如果你想使用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