試す:
find /directory -name "*pattern*" -exec sh -c 'cut -f8 {} > {}.txt' \;
ただし、一部のバージョンの find は{}
個別の引数である必要があり、{}
それ以外の場合はファイル名に展開されないことに注意してください。あなたはそれを回避することができます:
find /directory -name "*pattern*" -exec sh -c 'cut -f8 $0 > $0.txt' {} \;
(この代替コマンドは、一致したファイルを含むサブディレクトリに出力ファイルを配置します。必要に応じて、にリダイレクトすることでそれを回避できます。${0#*/}
問題はfind
、リダイレクトを行っていないことです。シェルはそうです。コマンドは次とまったく同じです。
# Sample of INCORRECT code
find /directory -name "*pattern*" -exec cut -f8 {} \; > {}.txt
標準から次の点に注意してください。
"{}" の 2 文字のみを含む引数が複数存在する場合、動作は規定されていません。
utility_name または引数文字列に 2 文字の "{}" が含まれていて、2 文字の "{}" だけが含まれていない場合、find がこれらの 2 文字を置き換えるか、変更せずに文字列を使用するかは実装定義です。