แสดงรายการไฟล์ทั้งหมดที่ไม่มีส่วนขยาย


11

ฉันต้องการแสดงรายการไฟล์ทั้งหมดในไดเรกทอรีที่ไม่มีนามสกุล

ตัวอย่างเช่น:

$ ls
a.txt    b      c.pdf     d     e.png
$ ls -someOption
b       d

ฉันสามารถใช้คำสั่งอะไรแทนได้ls -someOptionบ้าง


โดยปกติหากคุณต้องการทราบตัวเลือกสำหรับคำสั่งให้อ่าน man page ของมันโดยพิมพ์ "man <command>" ในเทอร์มินัล man ย่อมาจาก manual (help)
.for

@AadityaBagga ในกรณีนี้ไม่พบคำตอบในคู่มือ
wisbucky

ในสถานการณ์สมมตินี้คุณพิจารณา.gitignoreส่วนขยายหรือไม่
Amit Naidu

คำตอบ:


14
shopt -s extglob ## enables extended globbing
ls !(*.*) ## matches every file except those containing a dot

คุณจะพบว่าการทำเช่นนี้จะแสดงเนื้อหาของทุกไดเรกทอรีในไดเรกทอรีทำงาน หากคุณไม่ต้องการสิ่งนี้ให้ใช้:

ls -d !(*.*)

คุณสามารถใส่shopt -s extglobในของคุณ~/.bashrcจะมีมันเปิดใช้งานเมื่อใดก็ตามที่คุณเปิดสถานี มีบรรทัดใน Ubuntu เริ่มต้น~/.bashrc(บรรทัดที่ 29 สำหรับฉันที่ 13.04) ที่คุณสามารถยกเลิกการคอมเม้นต์เพื่อเปิดใช้งานนี้ (และ globstar)

ดูวิกิของ Gregสำหรับข้อมูลเพิ่มเติมเกี่ยวกับทางเลือกที่หลากหลายของเชลล์ โปรดทราบว่านี่เป็นคุณสมบัติของ bash shell แทนที่จะเป็นlsคำสั่งดังนั้นคุณสามารถใช้กับคำสั่งอื่นได้

หรือคุณสามารถใช้

ls --ignore='*.*'

หรือ

ls -I '*.*'

... ซึ่งเป็นlsตัวเลือกภายในแต่ extglob สามารถนำไปใช้กับคำสั่งโดยพลการใด ๆ & ดังนั้นจะมีประโยชน์มากขึ้นในความคิดของฉัน


1
OP ไม่ได้พูดถึงเชลล์ตัวไหนถึงแม้ว่าฉันเดาว่าจะใช้ bash ถ้าเป็น ksh ไม่จำเป็นต้องมี extglob โดยค่าเริ่มต้นเพียง:ls !(*.*)
runrig

1
@runrig คุณค่อนข้างถูกต้อง แต่ให้ลักษณะพื้นฐานของคำถามที่ฉันคิดว่า OP กำลังใช้เปลือก bash เริ่มต้น
evilsoup

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