ไม่รวมไฟล์บางไฟล์เป็น ls


61

ฉันต้องการเรียกใช้ ls และยกเว้นบางไฟล์ในผลลัพธ์

เมื่อฉันเรียกใช้คำสั่งต่อไปนี้ฉันจะได้รับไฟล์ทั้งหมดพร้อมกันในหนึ่งบรรทัด:

$ ls -1
file1
file2
file3
temp

ฉันต้องการเรียกใช้คำสั่งนี้เพื่อให้มันแสดง

$ ls -1 <insert magic here> temp
file1
file2
file3

คำตอบ:


82
ls -I <filename>

-I = ละเว้นชื่อไฟล์เช่นอย่าแสดงไฟล์ที่ระบุ

หากต้องการข้ามมากกว่าหนึ่งไฟล์ให้เพิ่ม-Iหน้าชื่อไฟล์แต่ละไฟล์

ls -I file1 -I file2

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

ls -I "*.jpg" -I "*.svg"

4
หากคุณใช้ตัวเลือกแบบยาว--ignoreคุณสามารถขยายไปยังรูปแบบแบบls --ignore="file?"ls --ignore="file*"
กลม

3
คุณสามารถใช้รูปแบบ glob ด้วยแบบสั้นเช่นกันโดยการอ้างถึงรูปแบบ
verboze

18

สำหรับฉันถ้าฉันใช้ -I ครั้งเดียวมันใช้งานได้ แต่ถ้าฉันใช้สองครั้งมันก็ไม่ทำงาน เช่น ls -I *.csvงาน

แต่ ls -I *.csv -I *.txtใช้งานไม่ได้และส่งคืนไฟล์ txt แทน

-ได้ทำเคล็ดลับสำหรับฉันแล้ว นี่คือสิ่งที่ฉันต้องการและทำงาน

ls -lhrt --ignore="*.gz" --ignore="*.1"

นั่นจะแสดงรายการไฟล์จากโฟลเดอร์บันทึกที่ไม่รวมไฟล์สำรองข้อมูลเก่า


3
quoting * .csv ในงานรูปแบบแรกเช่นls -I '*.txt'. เหตุผลที่มันไม่ทำงาน unquote เป็นเพราะการขยายตัวของเชลล์คือคุณกำลังบอกเชลล์ให้แสดงรายการไฟล์ csv ทั้งหมดแทนที่จะแยกออก สิ่งที่เกิดขึ้นจริงคือมันละเว้นไฟล์. csv และ. 1 ไฟล์แรกหลังจากขยาย แต่แสดงรายการส่วนที่เหลือ
verboze

ข้อความสองเท่าก็ใช้ได้สำหรับฉันเช่นกัน ขอบคุณ @verboze
user38537

ง่ายกว่านี้ ขอบคุณ
Philippe Delteil

6

ls --ignore={"*.jpg","*.png","*.svg"}


4
นี่เป็นเพียงการใช้วงเล็บปีกกาของ bash เพื่อรับสาม--ignoreตัวเลือก คุณสามารถใช้ได้ด้วย--ignore="*."{jpg,png,svg}
muru

1

ฉันคิดว่าสิ่งนี้ให้ผลลัพธ์ที่คุณต้องการ:

ls -1 !(temp)

เห็นได้ชัดว่าคุณต้องการshopt -s extglobที่จะทำงาน
(ฉันได้เปิดใช้งานดังนั้นฉันเดาบางครั้งในอดีตอันไกลโพ้นฉันพบว่ามีประโยชน์และเปิดใช้งานได้)

ฉันเดาว่าคุณสามารถใช้ grep เพื่อกรองผลลัพธ์:

ls -1 | grep -v '^temp$'

การใช้ไพพ์และฟิลเตอร์ช่วยเพิ่มความยืดหยุ่นและทักษะที่สามารถถ่ายโอนไปยังคำสั่ง / สถานการณ์อื่น ๆ ได้แม้ว่าคุณจะไม่สนใจสิ่งนั้นในกรณีนี้

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