ฉันคิดว่าจะต้องมีวิธีในการสร้าง 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 -ptell 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แต่คุณสามารถทำมันได้อย่างง่ายดายด้วยคำสั่ง:filefile /directory/containing/the/files -maxdepth 1 -not -type d