ディレクトリ内の各ファイルに bash 関数を繰り返し適用するスクリプトを作成しようとしています。たとえば、そのディレクトリにtests
ファイルとサブディレクトリの両方が含まれている場合、スクリプトは
find tests -type f -print0 | xargs -0 echo
完璧に動作します。これで、エコーの代わりにbash機能を適用できるようにしたいので、次のようなことを考えました。
function fun() {
echo $1
}
export -f fun
find tests -type f -print0 | xargs -0 bash -c 'fun "$@"'
しかし、以前はすべてのファイルを出力しましたが、テストでは単一のファイルのみを出力しました。私はこれら2つを同じように実行したいと思います。そうですか?
ベストアンサー1
シェルスクリプトを使用します。
から引用この素晴らしい答え:
シェルに加えて、他のプログラムでそれを使用できる必要がありますか?その場合はスクリプトでなければなりません。
他の答えですでに指摘したように、可能関数をエクスポートしてこの問題を解決してください。しかし、これは確かにたくさんスクリプトを使用する方が簡単です。
#!/bin/bash
# I'm a script named "fun"! :)
printf '%s\n' "$@"
その後、fun
スクリプトをPATH(おそらく~/bin
)のどこかに置き、実行可能であることを確認してから、次のように実行できます。
find tests -type f -exec fun {} +