Untuk daftar subdirektori langsung yang berisi file persis $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}'
Untuk daftar subdirektori langsung yang berisi lebih 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 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 dihentikan oleh karakter nol \0
, sehingga nama file yang berisi baris baru atau jenis ruang putih lainnya akan ditafsirkan dengan benar. The %h
mencetak masing-masing file dirname
. awk
kemudian menggunakan array untuk menghitung berapa kali bertemu setiap direktori, mencetaknya jika kondisi terpenuhi.
Harap dicatat bahwa tidak ada perintah yang disebutkan di atas yang akan menampilkan direktori yang berisi nol file. Juga perhatikan bahwa berdasarkan file saya mengacu pada 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-file di dalamnya, diperlukan perintah yang dimodifikasi. Ada terlalu banyak kemungkinan untuk mendaftar semuanya.