ฉันคิดว่าจะต้องมีวิธีในการสร้าง ls แสดงเฉพาะไดเรกทอรีที่ไม่ใช่ แต่หน้าคนไม่ทำให้ชัดเจน
ls
ผ่านบางอย่างเช่นgrep
ls -1F /directory/containing/the/files | grep -vE /$
แต่ทราบว่าการแยกการส่งออกของ LS สามารถหากิน
ฉันคิดว่าจะต้องมีวิธีในการสร้าง ls แสดงเฉพาะไดเรกทอรีที่ไม่ใช่ แต่หน้าคนไม่ทำให้ชัดเจน
ls
ผ่านบางอย่างเช่นgrep
ls -1F /directory/containing/the/files | grep -vE /$
แต่ทราบว่าการแยกการส่งออกของ LS สามารถหากิน
คำตอบ:
ls -p | grep -v /
การใช้ls -p
tell ls
เพื่อผนวกสแลชไปยังรายการซึ่งเป็นไดเร็กทอรีและการใช้grep -v /
tell grep
เพื่อส่งคืนเฉพาะบรรทัดที่ไม่มีสแลช
1
สวิทช์เมื่อวางท่อเอาต์พุตเพราะมันจะใช้ค่าเริ่มต้นเป็นคอลัมน์เดี่ยวในสถานการณ์นั้น ถ้านั่นคือสิ่งที่คุณมีความหมาย
คุณสามารถลองสิ่งนี้:
find . -maxdepth 1 -not -type d
และแผนที่นี้กับนามแฝงพิเศษ
แต่ถ้าคุณกระตือรือร้นที่จะใช้ls
คำสั่งจริงๆที่นี่:
ls -p | egrep -v /$
อีกวิธีหนึ่งคือ:
ls -lAh | grep -v '^d'
วิธีการนี้จะแสดงรายการใน
-l
รูปแบบรายการยาว-A
แสดงเกือบทั้งหมด (แสดงไฟล์ที่ซ่อนอยู่ แต่ไม่แสดง.
และ..
)-h
ขนาดไฟล์ที่มนุษย์อ่านได้ในขณะที่ grep
-v
อย่าแสดงระเบียนที่ตรงกันRegular expression
ตัวกรอง^d
- เริ่มต้นด้วยตัวอักษร d (สำหรับไดเรกทอรี) เช่นdrwxrwxr-x <some file details> <foldername>
หากคุณไม่ต้องการพิมพ์ทุกครั้งคุณอาจเปลี่ยนเป็นนามแฝงสำหรับโปรไฟล์ bash / shell
ฉันเห็นในความคิดเห็น (@thinksinbinary) ของคุณเกี่ยวกับคำตอบโดย @thomasrutter ที่คุณต้องการพิมพ์ในลำดับย้อนกลับและในคอลัมน์ คุณอาจจะคิดออกหรือย้ายแล้ว แต่นี่คือ:
ls -pr | grep -v / | column
ls -F | grep -v /
คำสั่งดังกล่าวจะแสดงไฟล์ แต่มันมี symlinks, ไพพ์ ฯลฯ หากคุณต้องการกำจัดมันด้วยคุณสามารถใช้หนึ่งในแฟล็กที่ระบุด้านล่าง
ls -F
ผนวกสัญลักษณ์เข้ากับชื่อไฟล์ สัญลักษณ์เหล่านี้แสดงข้อมูลที่เป็นประโยชน์เกี่ยวกับไฟล์
@
หมายถึงลิงก์สัญลักษณ์ (หรือไฟล์นั้นมีคุณสมบัติที่ขยายเพิ่ม )*
หมายถึงปฏิบัติการได้=
วิธีซ็อกเก็ต|
หมายถึงชื่อท่อ>
หมายถึงประตู/
หมายถึงไดเรกทอรีls -F | grep -Ev '/|@|*|=|>|\|'
คำสั่งด้านบนแสดงเฉพาะไฟล์
ls
แต่คุณสามารถทำมันได้อย่างง่ายดายด้วยคำสั่ง:file
file /directory/containing/the/files -maxdepth 1 -not -type d