วิธีรับรายชื่อไฟล์ในบรรทัดต่างๆ


116

ฉันต้องการที่จะได้รับรายชื่อของไฟล์ทั้งหมดในไดเรกทอรีเช่นเดียวกับเพื่อให้แต่ละชื่อไฟล์จะอยู่ในสายแยกที่ไม่มีรายละเอียดพิเศษที่จัดทำโดยls ls -lฉันมองls --helpแล้วไม่พบทางออก ฉันพยายามทำ

ls -l | cut --fields=9 -d" "

แต่lsไม่ใช้จำนวนช่องว่างคงที่ระหว่างคอลัมน์ มีความคิดอย่างไรในการทำเช่นนี้โดยเฉพาะในบรรทัดเดียว

คำตอบ:


259

ls -1

Lนั่นคือจำนวนไม่เล็ก


5
ฉันเห็นสิ่งนี้ในเอกสารประกอบ: cross -x, commas -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C ฉันไม่แน่ใจว่าพวกเขาคิดอย่างไรกับสิ่งเหล่านี้
Alexander Taylor

23

ls -1. จากความช่วยเหลือ:

-1 รายการหนึ่งไฟล์ต่อบรรทัด

ทำงานบน cygwin และ FreeBSD ดังนั้นจึงอาจไม่เฉพาะ GNU มากเกินไป


ทำงานบน Ubuntu ได้เช่นกัน ขอบคุณ
Yonatan Simson

12

วิธีแก้ปัญหาโดยไม่ต้องใช้ท่อ :-)

 ls --format single-column

โปรดทราบว่าอ็อพชันแบบยาวได้รับการสนับสนุนเฉพาะบนGNU coreutilsที่BSD lsรองรับอาร์กิวเมนต์แบบสั้นเท่านั้น-1


6

บางทีอาจจะเป็น:

ls | awk '{print $NF}'

หมายเหตุ: ชื่อไฟล์ที่มีช่องว่างเช่น "apples and pears.jpg" จะเปลี่ยนเป็น "pears.jpg"
oknate

4

ls | cat ... หรืออาจเป็นไปได้ว่า ls -1


4
โปรดหลีกเลี่ยงการใช้แมวอย่างไร้ประโยชน์ :)
jhwist

3
catไม่ไร้ประโยชน์ในกรณีนี้ จัดรูปแบบเอาต์พุตlsในคอลัมน์เดียวตามที่ OP ขอ
Felix Eve

3

ใช้คำสั่ง sed เพื่อแสดงรายการคอลัมน์เดียว

ls -l | sed 's/\(^[^0-9].\*[0-9]\*:[0-9]\*\) \(.*\)/\2/'

ls -lให้ผลลัพธ์เดียวกันกับคำตอบทั้งหมดของคุณ ไม่แน่ใจว่ามีอะไรsedเพิ่มที่นี่บ้าง...
Felix Eve

3

ลองสิ่งนี้:

$ ls | xargs -n num

นี่numคือจำนวนคอลัมน์ที่คุณต้องการแสดงรายการ


1

ก่อนอื่นคุณสามารถใช้สิ่งนี้ มันจะแสดงหนึ่งไฟล์ต่อบรรทัด

ls -l | sed 's /(.*) (. *) $ / \ 2 /'

หรืออื่น ๆ ที่คุณสามารถใช้ได้

หา. -maxdepth 1 | เส 's /.///'

ทั้งสองสิ่งเหมือนกัน


ฉันได้รับข้อผิดพลาดsed: -e expression #1, char 16: invalid reference \2 on `s' command's RHS
Felix Eve


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