複数のディレクトリにあるファイルを実行するスクリプトを作成する方法

複数のディレクトリにあるファイルを実行するスクリプトを作成する方法

複数のディレクトリにあるファイルを実行するスクリプトを作成するには?

問題はこれです:私は多くのディレクトリを持っていますが、各ディレクトリにはa.pyPythonスクリプトで読み込んで分析したいデータファイル(例:)があります。各ディレクトリに「cd」と「a.py」と入力したくありません。出力は各ディレクトリに保存されます。

答え1

findあなたに魔法をかけてあげます。

find -name datafile.dat -execdir ~/a.py '{}' \;

find は、すべてのサブディレクトリで一連のルールに一致するファイルを繰り返し検索し、そのファイルに対して操作を実行します。

-name ルールを使用すると、指定した名前と一致する名前のファイルを検索できます。ワイルドカードを使用できます。たとえば、「*.dat」はすべての.datファイルを検索します。

必要に応じて、-nameの代わりに-regexを使用してglobパターンの代わりに正規表現パターンと一致させることができるため、 ". * \ .dat $"を使用してすべての.datファイルと一致させることができます。

-execdir は、見つかったファイルのディレクトリからユーザーが提供するすべてのコマンドを実行し、「{}」を検索したファイルに置き換えます。

答え2

おそらくforループを使用することもできます。

for i in first_dir second_dir third_dir; do
    pushd $i
    a.py
    popd
done

set to , as again , 最後に as をpushd $i; a.py; popd使用して実行されます。指定したディレクトリに切り替えてから元の場所に戻します。$ifirst_dir$isecond_dir$ithird_dirpushdpopd

関連情報