0

特定の文字列を含むファイルを検索し、そのファイルのリストをディレクトリ X に移動できるようにしたい

このコマンドを使用してファイルを見つけることができます

find . -iname 'commaus*' | xargs grep '>24901<' -sl

そして、ファイルを移動するこのコマンド

mv * /home/user/scripts/xslt

しかし、これらのコマンドを組み合わせて、見つかったファイルを移動する方法はありますか?

次のような結合された検索/アクション コマンドを見たことがあります。

find /home/user -name property_images -ok rm -f {} \;

しかし、この構造に従うとエラーが返されます

find . -iname 'commaus*' | xargs grep '>24901<' -sl -ok mv {} /home/user/scripts/xslt;
4

3 に答える 3

2

また、(ループなしで)試すことができるかもしれません:

find . -iname 'commaus*' | grep '>24901<' -sl -ok | xargs mv -t /home/user/scripts/xslt
于 2013-02-28T03:49:34.673 に答える
2

forループでラップすることでこれを行うことができます

for i in `find /path/to/search -iname 'optionalfilename' -exec grep -H -m1 '>24901<' {} \; | awk -F: '{print $1}'
do
   mv $i /path/to/new/location
done

ファイル名にスペースまたはコロンが含まれている場合、これは期待どおりに機能しません

于 2013-02-28T03:27:21.290 に答える
2

ループを使用します。この場合、次を試してください。

for i in `find . -iname 'commaus*' | xargs grep '>24901<' -sl`; do mv "$i" /home/user/scripts/xslt/; done

非常にハックですが、動作するはずです。

于 2013-02-28T03:30:10.643 に答える