ls ทุกอย่างที่เป็น _not_ symlink


12

lsมีวิธีแสดงเงื่อนไขที่ไม่พึงประสงค์เช่น "ไฟล์ทั้งหมดที่ไม่ใช่ symlink" หรือไม่? ฉันใช้อันหลังจำนวนมากในไดเรกทอรีโครงการ แต่ข้อเสียอื่น ๆ ก็มีประโยชน์เช่นกัน

สำหรับตอนนี้การวิจัยของฉันนำไปสู่การสร้างนามแฝงกับบางสิ่งที่ "ชอบ":

find . -maxdepth 1 ! -type l | sort # (...)

แต่แน่นอนด้วยวิธีนี้ฉันไม่ได้รับการระบายสีlsการจัดรูปแบบคอลัมน์ ฯลฯ ...

ฉันใช้ Bash v3 ใน OS X 10.8.2 และ Bash v4 บน Pangolin บางครั้ง

คำตอบ:


14

แทนที่จะใช้กับท่อให้sortใช้ ls

find . -maxdepth 1 \! -type l -exec ls -d {} +

find . -maxdepth 1 \! -type l | xargs ls -d

หากคุณใช้เปลือก zsh คุณสามารถใช้ส่วนขยายแบบพกพาที่ไม่ใช่แบบพกพาได้:

ls -d *(^@)

ขอบคุณ 4 คำตอบ! ทำไมคุณต้องหนี! ดูเหมือนว่าจะทำงานได้โดยไม่ต้อง .. สิ่งที่ฉันเสี่ยงโดยไม่หนีมันไปไหน? ที่น่าสนใจว่าคุณใช้ขั้นสุดท้าย+และไม่\;โปรดอธิบาย?
Robottinosino

2
@Robottinosino +ทำให้มันส่งทั้งหมดไปยังlsคำสั่งเดียวแทนที่จะใช้มันแยกกันสำหรับแต่ละไฟล์ (ด้วยวิธีนี้ ls สามารถทำคอลัมน์และการเรียงลำดับ) ฉันหนี! เพราะมันเป็นตัวละครพิเศษสำหรับเชลล์บางตัวถึงแม้ว่าคุณจะยอมรับได้ดีก็ตาม
Random832

Gotcha สิ่งที่ยอดเยี่ยม! คุณเห็นด้วยlsหรือเปล่าว่าเป็นเรื่องลำบากนิดหน่อยเพียงเพื่อลบล้างคำกริยาในแบบง่าย ๆ? มีวิธีที่ดีกว่านี้ไหม
Robottinosino

1
@ Robottinosino แก้ไขด้วย zsh สิ่งที่สามารถทำได้ ฉันไม่คิดว่าทุบตีสามารถทำได้
Random832
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.