คำถามติดแท็ก ls

คำสั่ง ls แสดงรายการเนื้อหาของไดเรกทอรี

13
ทรัพยากรที่มีประสิทธิภาพมากที่สุดในการนับจำนวนไฟล์ในไดเรกทอรีคืออะไร?
CentOS 5.9 ฉันเจอปัญหาเมื่อวันก่อนที่ไดเรกทอรีมีไฟล์จำนวนมาก เมื่อต้องการนับฉันวิ่งls -l /foo/foo2/ | wc -l ปรากฎว่ามีมากกว่า 1 ล้านไฟล์ในไดเรกทอรีเดียว (เรื่องยาว - สาเหตุที่แท้จริงได้รับการแก้ไข) คำถามของฉันคือ: มีวิธีที่เร็วกว่าในการนับหรือไม่ อะไรจะเป็นวิธีที่มีประสิทธิภาพที่สุดในการนับ?
55 bash  shell  directory  ls 

9
ฉันจะสะท้อนเอาต์พุต 1 คอลัมน์จากคำสั่ง ls ได้อย่างไร
ให้พูดเมื่อฉันทำคำสั่ง ls ผลลัพธ์คือ: file1 file2 file3 file4 เป็นไปได้หรือไม่ที่จะแสดงเฉพาะคอลัมน์ของเอาต์พุตในกรณีนี้ file2? ฉันได้ลองทำสิ่งต่อไปนี้โดยไม่ประสบความสำเร็จ: echo ls | $2 โดยพื้นฐานทั้งหมดที่ฉันต้องการทำคือ echo เฉพาะคอลัมน์ที่สองในกรณีนี้ฉันต้องการ echo: file2
54 bash  ls  parameter  arguments 

2
รายการไฟล์ทั้งหมดที่มีหมายเลขไอโหนดเดียวกันหรือไม่
ให้บอกว่าเมื่อฉันทำls -liในไดเรกทอรีฉันได้รับนี้ 12353538 -rw-r--r-- 6 me me 1650 2013-01-10 16:33 fun.txt ดังที่แสดงผลไฟล์fun.txtมี6ฮาร์ดลิงก์ และจำนวน inode คือ12353538 ในกรณีนี้ฉันจะหาฮาร์ดลิงก์ทั้งหมดสำหรับไฟล์เช่นไฟล์ที่มีหมายเลขไอโหนดเดียวกันได้อย่างไร
53 ls  inode 

3
การใช้รูปแบบ OR ในสัญลักษณ์ตัวแทนเชลล์
เนื้อหาของ dir ของฉันคือ $ ls -lrt total 0 -rw-r--r-- 1 user1 admin 19 Oct 8 12:31 night.txt -rw-r--r-- 1 user1 admin 19 Oct 8 12:31 noon.txt -rw-r--r-- 1 user1 admin 38 Oct 8 12:31 day.txt ฉันต้องการแสดงรายละเอียดของไฟล์ที่มีคำในชื่อไฟล์ตามที่ระบุ ตัวอย่าง: $ ls -lrt *day|night* ls: *day: No such file or directory bash: night.txt: …
52 bash  shell  zsh  ls  wildcards 

9
วิธีการปิดสีด้วย `ls '?
เป็นเรื่องปกติที่จะมีเอาต์พุตสีจากls, grepฯลฯ แต่เมื่อคุณไม่ต้องการมัน (เช่นในสคริปต์ที่คุณกำลังไพพ์ผลลัพธ์ไปยังคำสั่งอื่น) มีสวิตช์ที่สามารถปิดได้หรือไม่? ls -Gเปิดใช้ (มีบางรุ่นที่มาจาก BSD ls) หากไม่ใช่ค่าเริ่มต้น แต่ls +Gจะไม่ปิด มีอะไรอีกบ้างที่จะ?
50 ls  colors 

7
ทำไม ls -d ยังแสดงรายการไฟล์และเอกสารอยู่ที่ไหน?
เมื่อระบุls --directory a*ว่าควรแสดงเฉพาะไดเรกทอรีที่ขึ้นต้นด้วยa* แต่มันจะแสดงรายการไฟล์และไดเรกทอรีที่เริ่มต้นด้วย a คำถาม : ที่ฉันอาจพบเอกสารบางอย่างเกี่ยวกับเรื่องนี้อื่น ๆ กว่าmanและinfoที่ผมคิดว่าผมมองอย่างละเอียด? ทำงานใน BASH เท่านั้นหรือไม่
48 bash  shell  ls  wildcards  options 

5
รายการอาร์กิวเมนต์ยาวเกินไปสำหรับ ls
ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามls *.txt | wc -lไดเรกทอรีที่มีไฟล์จำนวนมาก: -bash: /bin/ls: Argument list too long เกณฑ์ของ "รายการอาร์กิวเมนต์" นี้ขึ้นอยู่กับ distro หรือข้อมูลจำเพาะของคอมพิวเตอร์หรือไม่ โดยปกติแล้วฉันจะส่งผลให้เกิดผลลัพธ์ที่ยิ่งใหญ่เช่นคำสั่งอื่น ๆ ( wc -lตัวอย่าง) ดังนั้นฉันจึงไม่กังวลกับข้อ จำกัด ของเทอร์มินัล
48 ls  arguments 

1
นามแฝงสำหรับรายการไดเรกทอรีเรียงตามเวลาที่แก้ไขในลำดับย้อนกลับ
เมื่อฉันต้องการค้นหาไฟล์ที่ใช้ล่าสุดของฉันคำสั่งนี้: ls -lt รายการตามลำดับจากน้อยไปมาก (ตามเวลา) เมื่อมีไฟล์จำนวนมากฉันต้องเลื่อนไปที่ด้านบนเพื่อดูไฟล์ที่ต้องการเพราะจะไม่พอดีกับหน้าจอเทอร์มินัล หลังจากค้นพบว่าtacมีผลต่อผลลัพธ์ฉันใช้: ls -lt dir/ | tac มีวิธีที่สนุกกว่าในการทำโดยไม่ใช้สคริปต์ / utils ภายนอกหรือไม่?
48 ls 


11
แสดงเฉพาะไฟล์ที่ซ่อนอยู่ (ไฟล์ dot) ในนามแฝง ls
ฉันกำลังใช้คำสั่ง ls -a | grep '^\.' เพื่อแสดงเฉพาะไฟล์ที่ซ่อนอยู่ ฉันเพิ่มบรรทัด alias hidden='ls -a | grep '^\.'' # show only hidden files ไปยัง.bash_aliasesไฟล์ แต่มันไม่ได้ผล มันอาจเป็นปัญหากับ'ตัวละคร คุณกรุณาช่วยฉันเขียนนามแฝงที่ถูกต้องได้ไหม
42 ls  alias  wildcards 

9
วิธีแสดงรายการไฟล์ที่ไม่มีไดเรกทอรีและกรองตามชื่อ (ตัวเลือก ls)
uploadsฉันมีไดเรกทอรีที่เรียกว่า มันมีไฟล์จำนวนมากรวมถึงไดเรกทอรีย่อยบางแห่งที่มีไฟล์อยู่ด้วย มีวิธีที่ฉันสามารถ (ในขั้นตอนเดียว) ทำต่อไปนี้: แสดงรายการเฉพาะไฟล์ในไดเรกทอรีที่อัปโหลดราก - ฉันไม่ต้องการเห็นชื่อโฟลเดอร์ย่อยหรือเนื้อหาของพวกเขา และ อย่าแสดงไฟล์ใด ๆ ที่ขึ้นต้นด้วย t_ ฉันรู้เกี่ยวกับ-dธง แต่มันก็ไม่ได้รับสิ่งที่ฉันต้องการ
42 ls  filenames 

2
เอาต์พุตจาก ls มีบรรทัดใหม่ แต่แสดงในบรรทัดเดียว ทำไม?
ฉันคิดว่าฉันอาจจะมองเห็นจุดที่ค่อนข้างพื้นฐานเกี่ยวกับเปลือกหอย เอาต์พุตจากคำสั่งlsโดยค่าเริ่มต้นจะแยกเอาต์พุตด้วยบรรทัดใหม่ แต่เชลล์แสดงเอาต์พุตในบรรทัดเดียว ใครสามารถอธิบายสิ่งนี้ให้ฉันได้บ้าง ฉันสันนิษฐานเสมอว่าเอาต์พุตถูกคั่นด้วยช่องว่าง แต่ตอนนี้เมื่อฉันเห็นเอาต์พุตคั่นด้วยบรรทัดใหม่ฉันคาดว่าเอาต์พุตจะแสดงในบรรทัดแยกกัน ตัวอย่าง: cpoweradm@debian:~/lpi103-4$ ls text* text1 text2 text3 odแสดงว่าเอาต์พุตถูกคั่นด้วยบรรทัดใหม่: cpoweradm@debian:~/lpi103-4$ ls text* | od -c 0000000 t e x t 1 \n t e x t 2 \n t e x t 0000020 3 \n 0000022 หากมีการขึ้นบรรทัดใหม่เหตุใดเอาต์พุตจึงไม่แสดงเป็น: text1 text2 text3
41 bash  terminal  ls  od 

3
dircolors: แก้ไขการตั้งค่าสี globaly
ฉันเข้าใจการlsใช้dircolorsเพื่อแสดงผลสี dircolorsมีฐานข้อมูลเริ่มต้นของสีที่เชื่อมโยงกับนามสกุลไฟล์ซึ่งสามารถพิมพ์ด้วยคำสั่ง dircolors --print-database จากที่ผมอ่านฐานข้อมูลทั้งระบบควรจะอยู่ในman dir_colors /etc/DIR_COLORSแต่ไฟล์นี้ไม่มีอยู่ในระบบของฉัน (Debian) ฉันจะแก้ไขการตั้งค่าสีทั่วทั้งระบบได้dircolorsอย่างไร คำสั่งdircolors --print-databaseใช้การตั้งค่าจากที่ไหนเมื่อไม่มีไฟล์อยู่ ฉันทราบว่าผู้ใช้สามารถมีไฟล์เฉพาะผู้ใช้~/.dircolorsพร้อมการตั้งค่าของเขา แต่นี่ไม่เหมาะสำหรับฉันเนื่องจากฉันต้องเปลี่ยนการตั้งค่าสำหรับทุกคน คำถามที่สองคือว่าเป็นไปได้หรือไม่ที่จะใช้สี 8 บิตสำหรับ dircolors xterm-256colorขั้วของฉันคือ
40 bash  ls  colors 

2
เหตุใดไดเรกทอรีใหม่จึงมีฮาร์ดลิงก์นับ 2 ก่อนที่จะเพิ่มสิ่งใดเข้าไปในนั้น
สมมติว่าฉันเพิ่งสร้างไดเรกทอรีใหม่ไดเรกทอรีแล้วฉันทำคำสั่ง ls -ld ฉันเห็นว่าจำนวนฮาร์ดลิงก์คือ 2 อะไรทำให้ฮาร์ดลิงก์ 2 ตั้งแต่เริ่มต้น? นอกจากนี้ยังมีจำนวนไดเรกทอรีย่อยในไดเรกทอรีปัจจุบันเท่ากับจำนวนฮาร์ดลิงก์ - 2?
38 directory  ls 

2
มีเหตุผลหรือไม่ที่ ls ไม่มีตัวเลือก --zero หรือ -0
คำถามนี้ได้รับแจ้งจากคำถามเกี่ยวกับls' ตัวเลือกและแนวโน้มที่เกิดขึ้นของคนที่จะถามคำถามและคำตอบที่มีการประมวลผลการส่งออกของ-1ls การใช้งานเอาต์พุตนี้lsดูเหมือนจะเข้าใจได้เช่น: หากคุณรู้วิธีเรียงลำดับรายการไฟล์ด้วยlsคุณอาจต้องการใช้ผลลัพธ์ในลักษณะนั้นเป็นอินพุตสำหรับอย่างอื่น หากคำถาม & คำตอบเหล่านั้นไม่ได้มีการอ้างอิงไปยังรายการชื่อไฟล์ที่สร้างขึ้นซึ่งประกอบด้วยชื่อไฟล์ที่ประพฤติดี (ไม่มีอักขระพิเศษเช่นช่องว่างและการขึ้นบรรทัดใหม่) พวกเขามักถูกวิจารณ์โดยบางคนที่ชี้ให้เห็นถึงอันตรายของลำดับคำสั่ง เป็นไฟล์ที่มีบรรทัดใหม่เว้นวรรคและอื่น ๆ find, sortและสาธารณูปโภคอื่น ๆ ในการแก้ปัญหาของการสื่อสาร "ยาก" ชื่อไฟล์เช่นxargsโดยใช้ตัวเลือกในการแยกชื่อไฟล์ที่มีตัวละคร NUL / ไบต์ซึ่งไม่ได้เป็นตัวละครที่ถูกต้องในชื่อไฟล์ (เพียงคนเดียวที่นอกเหนือไป/?) บน ระบบไฟล์ Unix / Linux ฉันมองไปที่หน้า man สำหรับlsและ output สำหรับls --help(ซึ่งมีตัวเลือกเพิ่มเติมในรายการ) และไม่พบว่าls(จากcoreutils) มีตัวเลือกเพื่อระบุ NUL output ที่แยกออก มันมี-1ตัวเลือกที่สามารถตีความได้ว่า"ชื่อไฟล์เอาต์พุตคั่นด้วยขึ้นบรรทัดใหม่" ) ถาม : มีเหตุผลทางเทคนิคหรือปรัชญาทำไมlsไม่มีตัวเลือก--zeroหรือ-0ที่จะ "ชื่อไฟล์เอาต์พุตคั่นด้วย NUL"? หากคุณทำสิ่งที่ส่งออกเฉพาะชื่อไฟล์ (และไม่ใช้เช่น-l) ที่เหมาะสม: ls -rt -0 …
37 shell  command-line  ls 

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