GNU/Linux >> Linux の 問題 >  >> Linux

特定の数のファイルを含むディレクトリを検索する

これを試して、サブディレクトリ名とそれらに含まれるファイル/ディレクトリの数を取得できます:

find . -maxdepth 1 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \;

すべてのサブディレクトリ (再帰的検索) に対して同じことをしたい場合は、代わりにこれを使用してください:

find . -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \;

ちょうど 10 個のファイルがあるディレクトリを選択するには:

find . -maxdepth 1 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \; | 
  awk '$NF==10'

10以上:

find . -maxdepth 1 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \; | 
 awk '$NF>=10'

10 以下:

find . -maxdepth 1 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \; | 
 awk '$NF<=10'

ディレクトリ名のみを保持したい場合 (たとえば、@evilsoup が提案したように、ダウンストリームの別のプロセスにパイプしたい場合)、これを使用できます:

find . -maxdepth 1 -type d -exec bash -c "echo -ne '{}\t'; ls '{}' | wc -l" \; | 
 awk -F"\t" '$NF<=10{print $1}'

正確にを含む直下のサブディレクトリを一覧表示するには $NUM ファイル。

find -maxdepth 2 -mindepth 2 -type f -printf '%h\0' | awk -v num="$NUM" 'BEGIN{RS="\0"} {array[$0]++} END{for (line in array) if (array[line]==num) printf "%s\n", line}'

greater を含む直下のサブディレクトリを一覧表示するには $NUM より ファイル。

find -maxdepth 2 -mindepth 2 -type f -printf '%h\0' | awk -v num="$NUM" 'BEGIN{RS="\0"} {array[$0]++} END{for (line in array) if (array[line]>num) printf "%s\n", line}'

less を含む直下のサブディレクトリを一覧表示するには $NUM より ファイル。

find -maxdepth 2 -mindepth 2 -type f -printf '%h\0' | awk -v num="$NUM" 'BEGIN{RS="\0"} {array[$0]++} END{for (line in array) if (array[line]<num) printf "%s\n", line}'

項目はヌル文字 \0 で終了します であるため、改行やその他の種類の空白を含むファイル名は正しく解釈されます。 %h 各ファイルの dirname を出力します . awk 次に、配列を使用して各ディレクトリに遭遇した回数をカウントし、条件が満たされた場合に出力します。

前述のコマンドはどれも、ファイルを含まないディレクトリを表示しないことに注意してください。また、ファイルとは通常のファイルを参照していることに注意してください。ではありません リンク、ディレクトリ、ソケット、ブロック、名前付きパイプなど。

私はこれをできるだけ簡単にしようとしました。再帰的なサブディレクトリまたはその中のファイルを見つけたい場合は、変更されたコマンドが必要です。それらをすべてリストするにはあまりにも多くの可能性があります.


これを試してください:

<ブロック引用>

[ `見つける。 | | wc -l` -eq 10 ] &&echo "見つかりました"

[ `見つける。 | | wc -l` -gt 10 ] &&echo "見つかりました"

[ `見つける。 | | wc -l` -lt 10 ] &&echo "見つかりました"

この例では、CURRENT ディレクトリに正確に 10 個、10 個以上、10 個未満のファイル/ディレクトリが含まれているかどうかを確認できます。ディレクトリの束をチェックする必要がある場合は、ループを使用してください。


Linux
  1. プロのようにLinuxでファイルとディレクトリを探す

  2. 特定の文字列を含むファイルの数は?

  3. 最大のファイルまたはディレクトリを見つけますか?

  1. ディレクトリとサブディレクトリ内のファイル数を見つける方法

  2. 特定のサブパスを持つファイルを見つける方法は?

  3. 多数のXmlファイルを再フォーマットしますか?

  1. WcとPipingを使用して、特定のディレクトリにあるファイルとディレクトリの数を見つける方法は?

  2. Linux でのファイル/ディレクトリの最大数は?

  3. 文字列を含む名前のすべてのファイルを検索