サブフォルダ内の各ファイルに bash 機能を繰り返し適用する

サブフォルダ内の各ファイルに bash 機能を繰り返し適用する

ディレクトリ内の各ファイルに 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 {} +

おすすめ記事