メールアーカイブを復元する必要があります。何千もの .eml ファイル。
次のことを行う単一の「検索」コマンドを実行したいと思います。
- 特定の文字列を探す
- 見つかった場合は、ファイルを別のフォルダーにコピーします。
迅速なヘルプをいただければ幸いです。
grep
と一緒に再帰を使用することをお勧めしxargs
ます:
grep "the string I want to find" -r --include=\*.eml -l -Z ROOTDIR | xargs -0 cp -t TARGETDIR
これにより、ディレクトリの下のすべての.eml
ファイルでROOTDIR
目的の文字列が検索され、それらがディレクトリに移動されますTARGETDIR
。-Z
ingrep
と-0
inにより、xargs
風変わりな文字を含むファイル名でも適切に機能することが保証されます。
編集:をに変更しmv
ましたcp
私はアダムの答えが好きですが、を使用したい場合は、次の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