概要
findなどのコマンドを利用してファイルを検索して、xargsに渡して処理をさせたい
しかし、対象ファイルが複数になると処理が連続して行われるために期待する動作にならない場合がある
以下のコマンドではテキストファイルを検索して、ファイルの中身をxxdコマンドの第一引数として渡している
出力結果として期待するのはファイル毎の処理結果が改行されて出力されることだが、
xxdによって改行コードが取り除かれるため、全ての処理結果が一行につながって出力されてしまう。
※xxdコマンドは16進数dumpなどが可能なコマンド
find *.txt | xargs -L 1 -I{} xxd -p -r {}
このような場合、bashコマンドを使用する
以下のようにbashコマンド使うと、その中でbashを立ち上げてコマンドを実行することができるため、
改行コードを挟むなどの操作が可能
find *.txt | xargs -L 1 -I{} bash -c 'xxd -p -r {}; printf "\n"'