何百もの入力を持つforループを終了する方法

何百もの入力を持つforループを終了する方法

時々何百ものディレクトリで何かを見つけるforループを終了する必要がありましたが、単一のコマンドでこれを行う方法を見つけることができませんでした。これを行うたびに、そのディレクトリをスキップしてすべてのディレクトリに移動するまで、次のディレクトリに移動します。 1つのコマンドでどのようにすべてを停止できますか?

例:

for index in $(ls -1 /path/to/direcorties)
 do
  find $index -name some_file.gz | awk -F/ '{print $2}' >> /other/path/file.txt
 done

すべて削除する必要がある場合は、ディレクトリがあるディレクトリをスキップして次のディレクトリに移動します。つまり、リストをすべて通過するまで、リスト内の各ディレクトリに対して新しいPIDを削除する必要があります。

答え1

ただし、「ls 構文解析」を 1 つの項目に再構成することをお勧めします。

find /path/to/directories -name ...

...これはいくつかの問題を解決します(その1つはスペースがあるディレクトリがあり、もう1つはControl-Cがデフォルトプロセスを終了することです)。このような対話型シェルプロセスを終了することに関するアドバイスは、そのプロセスを一時停止してから終了することです。 、方法は次ControlZとおりです。kill %

関連情報