Anda dapat mencoba ini, untuk mendapatkan nama sub direktori dan jumlah file/direktori yang dikandungnya:
find . -maxdepth 1 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \;
Jika Anda ingin melakukan hal yang sama untuk semua sub direktori (recursive find), gunakan ini sebagai gantinya:
find . -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \;
Untuk memilih direktori yang memiliki tepat 10 file:
find . -maxdepth 1 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \; |
awk '$NF==10'
10 atau lebih:
find . -maxdepth 1 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \; |
awk '$NF>=10'
10 atau kurang:
find . -maxdepth 1 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \; |
awk '$NF<=10'
Jika Anda hanya ingin menyimpan nama direktori (misalnya Anda ingin menyalurkannya ke proses lain di hilir seperti yang disarankan @evilsoup), Anda dapat menggunakan ini:
find . -maxdepth 1 -type d -exec bash -c "echo -ne '{}\t'; ls '{}' | wc -l" \; |
awk -F"\t" '$NF<=10{print $1}'
Untuk membuat daftar subdirektori langsung yang berisi persis $NUM
file.
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}'
Untuk membuat daftar subdirektori langsung yang berisi lebih besar dari $NUM
file.
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}'
Untuk membuat daftar subdirektori langsung yang berisi kurang dari $NUM
file.
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}'
Item diakhiri dengan karakter null \0
, sehingga nama file yang berisi baris baru atau jenis spasi lainnya akan ditafsirkan dengan benar. %h
mencetak dirname
setiap file . awk
lalu menggunakan larik untuk menghitung berapa kali ia menemukan setiap direktori, mencetaknya jika kondisinya terpenuhi.
Harap perhatikan bahwa tidak satu pun dari perintah tersebut di atas akan menampilkan direktori yang berisi nol file. Perhatikan juga bahwa menurut file saya merujuk ke file biasa, bukan tautan, direktori, soket, blok, pipa bernama, dan sebagainya.
Saya sudah mencoba melakukan ini sesederhana mungkin. Jika Anda ingin menemukan subdirektori rekursif atau file di dalamnya, diperlukan perintah yang dimodifikasi. Ada terlalu banyak kemungkinan untuk mencantumkan semuanya.
Coba ini:
[`menemukan. | wc -l` -eq 10 ] &&gema "Ditemukan"
[`menemukan. | wc -l` -gt 10 ] &&gema "Ditemukan"
[`menemukan. | wc -l` -lt 10 ] &&gema "Ditemukan"
Dalam contoh ini Anda dapat memeriksa apakah direktori CURRENT berisi persis 10, lebih dari 10 dan kurang dari 10 file/direktori. Jika Anda perlu memeriksa banyak direktori, cukup gunakan loop.