เพื่อแสดงรายการไดเรกทอรีย่อยทันทีที่มีว่า $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}'
รายการจะถูกยกเลิกด้วยอักขระ null \0
ดังนั้นชื่อไฟล์ที่มีบรรทัดใหม่หรือพื้นที่สีขาวประเภทอื่น ๆ จะถูกตีความอย่างถูกต้อง พิมพ์แต่ละไฟล์เป็น%h
จากนั้นใช้อาร์เรย์เพื่อนับจำนวนครั้งที่พบแต่ละไดเรกทอรีพิมพ์ถ้าตรงตามเงื่อนไขdirname
awk
โปรดทราบว่าคำสั่งข้างต้นจะไม่แสดงไดเรกทอรีที่มีไฟล์ศูนย์ โปรดทราบว่าด้วยไฟล์ฉันหมายถึงไฟล์ปกติไม่ใช่ลิงก์ไดเรกทอรีซ็อกเก็ตบล็อกชื่อไปป์และอื่น ๆ
ฉันพยายามทำสิ่งนี้ให้ง่ายที่สุด หากคุณต้องการค้นหาไดเรกทอรีย่อยซ้ำหรือไฟล์ในนั้นจำเป็นต้องมีคำสั่งแก้ไข มีความเป็นไปได้มากเกินไปที่จะแสดงรายการทั้งหมด