私があるディレクトリに、およびサブディレクトリがあるとしdir1
ます。各ディレクトリにはファイルがあり、各ディレクトリの各ディレクトリで同じコマンドを実行し、そのディレクトリ内でコマンドを実行したいと思います。dir2
dir3
foo
foo
私が「手で」実行した場合は、次のようになります。
cd dir1
(execute on foo)
cd ../dir2
(execute on foo)
cd ../dir3
(execute on foo)
このコマンドを実行する必要があります。各ディレクトリで。 foo
バッチ予約スクリプト(不思議な場合はHTCondor用)であり、予約スクリプトによって開始された実行の出力が各サブディレクトリで終わるように各サブディレクトリで実行する必要があります。
質問」ファイルディレクトリからファイルを検索してコマンドを実行する私が知る限り、私の質問に対する答えはありません。質問に対する最初の答えは解決策に近いので、私の場合はうまくいかず、2番目の答えは使用方法を知るのに十分ではありません。
ベストアンサー1
find
サポートしていると仮定すると、-execdir
代わりにこのオプションを使用してください。-exec
find . -type f -name 'foo' -execdir pwd \;
その後、各ディレクトリに順番に変更され、対応するfoo
ファイルがある場合は実行されますpwd
。
注:このソリューションの目的を変更して、名前付きディレクトリからコマンドを実行することはできませんfoo
。これを行うには、提供された各パラメータを繰り返し、各パラメータを順番に使用する-exec sh -c '...'
簡単なアプローチに戻る必要があります。この例は各ディレクトリで実行されます。sh
cd
pwd
find . -type d -name 'foodir' -exec sh -c '
for d in "$@"; do ( cd "$d" || exit; pwd ); done
' _ {} +