findの出力結果を任意のコマンドに渡し、結果を個別のファイルにリダイレクトする

trashsuiteさん、RosyHeadさんの以下のダイアリを見てチャレンジ。
find で見つけたファイル名を任意のコマンドに食わせ,結果をリダイレクトする - TrashSUITE
一行野郎の血が騒ぐ - RosyHeadの日記


なお、元ネタは以下のダイアリからだそうです。

find . -type f -exec docsis -d '{}' \;

この出力結果をfind . -type f のファイル毎に一つ一つリダイレクトでファイル化したいんだけどなぁ。

どうやるん???

http://d.hatena.ne.jp/UME/20090113

自分も初めは「xargs使えばいけるんじゃね?」と思ったんですが、たまたまmanコマンドでマニュアルを漁ってたら
awkのヘルプに使えそうなものが…。さっそく試してみると↓みたいな感じになりました。

> find . -name "*.txt" -type f | awk '{ system("command " $0 "> " $0 "_bak") }'

awkの$0変数にfindで見つかったファイル名が入ってくるので、system( )の中で任意のコマンドを実行させています。
クォートがやたら多くて見た目が美しくないが仕方ないか。こうしないと動かないし。