800の名前を持つサブディレクトリを含むディレクトリがありますdisp-001 ... disp-800
。これらのすべてのサブディレクトリには特定のファイルを含める必要がありますstdout
。たとえば、そのうちの1つにファイルは含まれておらず、ファイルがないフォルダを見つける必要があります。試してみると
find . -name "stdout"
私はすべてのファイルの値を返しますが、001から800までソートされていないため、フォルダを識別するのは困難です。出力を数値順にソートする方法はありますか?
メモ:
私は(少なくとも自分自身に)古典を示すためにこの質問を編集しません。XYの問題。私にとって必要なのは、特定のファイルを含まないディレクトリを識別することだけです。ただし、この質問は問題の具体的な試みソリューションについてです。特定のファイルを含まないディレクトリを見つけるためのソリューションを提供するここ。
答え1
個人的に私は代わりにシェルを使います。
$ for dir in disp-{001..800}; do [ -f "$dir"/stdout ] || echo "$dir"; done
disp-389
私のテストでは、disp-389
このディレクトリはファイルが欠落している唯一のディレクトリであるため、ファイルが印刷される唯一のディレクトリです。
シェルがこの形式の中括弧拡張をサポートしていない場合は、or for dir in disp*
(すべてのディレクトリを確認していると仮定)を使用してくださいfor dir in */
。