Egrep はファイルの内容に基づいてファイルのリストを生成していますが、そのリストを引数として cp に渡そうとして何か間違ったことをしています。(私のシェルは bash です)。ファイル名のスペースをエスケープして改行をスペースに変換すると思っていましたが、cp はパイプ入力でエスケープされたスペースを無視するようです。
ファイル名の例:2011-05-15\ 14.43.41.txt
$ cp `egrep -l "OS\ version: 10.6" * | sed -e 's/ /\ /g' | tr '\n' ' '` ~/crashreportstemp/
cp: cannot stat `2011-05-15': No such file or directory
バッククォートの内容を実行すると、cp に貼り付けることができる出力が得られます。
私もxargsを使ってみました:
$ egrep -l "OS\ version: 10.6" * | sed -e 's/ /\ /g' | tr '\n' ' ' | xargs cp ~/crashreportstemp
しかし、これにより、cp は最後に渡されたファイル名を最後の cp 引数として扱い、cp への明示的な引数を無視します。
cp: target `2011-05-30 16.23.30.txt' is not a directory
私は明らかにこれを行う正しい方法を見落としています。助けてください!
ありがとう - ジェイソン