Перелічити безпосередні підкаталоги, що містять саме $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}'
Для того, щоб перерахувати негайні підкаталоги , що містять більше , ніж $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}'
Для того, щоб перерахувати негайні підкаталоги , що містять менше , ніж $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
потім використовує масив, щоб підрахувати, скільки разів він стикається з кожною каталогом, друкуючи його, якщо умови виконані.
Зверніть увагу, що жодна з вищезгаданих команд не відображатиме каталоги, що містять нульові файли. Також зауважте, що під файлом я маю на увазі звичайні файли, а не посилання, каталоги, розетки, блоки, названі труби та ін.
Я намагався зробити це максимально просто. Якщо ви хочете знайти рекурсивні підкаталоги або файли в них, потрібна змінена команда. Існує занадто багато можливостей, щоб перерахувати їх усіх.