ฉันจะทำให้คำสั่ง find แสดงสแลชหลังจากไดเร็กทอรีได้อย่างไร? ตัวอย่างเช่นผมต้องการdir
ที่จะแสดงขึ้นเป็นแทนdir/
dir
ฉันกำลังใช้find . -print
ฉันจะทำให้คำสั่ง find แสดงสแลชหลังจากไดเร็กทอรีได้อย่างไร? ตัวอย่างเช่นผมต้องการdir
ที่จะแสดงขึ้นเป็นแทนdir/
dir
ฉันกำลังใช้find . -print
คำตอบ:
portably:
find . -type d -exec sh -c 'printf "%s/\n" "$0"' {} \; -or -print
หากคุณยินดีที่จะแสดงรายการไดเรกทอรีและไฟล์แยกกัน (คุณสามารถรวมเอาท์พุทโดยการเรียงลำดับ):
{ find . -type d -print | sed 's!$!/!'; find . \! -type d; } | sort
ด้วย GNU หาดูคำตอบ Shawn เจฟฟ์ของ
หากคุณยินดีที่จะเสี่ยงอักขระที่ไม่ใช่พิมพ์ถูก mangled แม้ไม่ได้ส่งสัญญาณไปยังสถานีให้ดูคำตอบของ ddeimeke
ใน zsh: print -rl -- **/*(DM)
( D
เพื่อรวมไฟล์ dot M
เพื่อเพิ่ม/
ไดเรกทอรีหลัง)
find . \( -type d -printf "%p/\n" , -type f -print \)
สิ่งนี้ใช้คำสั่ง printf เพื่อจัดรูปแบบชื่อไดเร็กทอรีและการพิมพ์มาตรฐานสำหรับส่วนที่เหลือ
-printf
เฉพาะสำหรับ GNU ค้นหา
find
โต้แย้งของตำแหน่งอนุญาตให้ทำผลลัพธ์ขั้นสูงเช่นนี้ อย่างไรก็ตามโปรดทราบว่าหากไม่มีช่องว่างรอบเครื่องหมายจุลภาคจะไม่ทำงาน
find . -type d -printf '%p/\n' -or -print
อาจจะ
find . -print0 | xargs -0 ls -Fd
เป็นตัวเลือกเช่นกัน
จากหน้าโซลาริส:
-F ทำเครื่องหมายไดเรกทอรีด้วยเครื่องหมายสแลช (/), ประตูที่มีเครื่องหมายมากกว่า - มากกว่า (>), ไฟล์เรียกทำงานที่มีเครื่องหมายดอกจันต่อท้าย (*), FIFO ที่มีแถบแนวตั้งต่อท้าย (|), ลิงก์สัญลักษณ์ที่มีต่อท้าย " ที่ "sign (@) และซ็อกเก็ตตระกูลที่อยู่ AF_UNIX ที่มีเครื่องหมาย trailingequals (=) ติดตาม symlinks ที่ชื่อว่าเป็นตัวถูกดำเนินการ