วิธีรับรายชื่อไดเรกทอรี linux สำหรับไฟล์ที่ขึ้นต้นด้วยตัวอักษรบางตัวที่ไม่ได้ลงไปในไดเรกทอรีย่อย?


18

สมมติว่าคุณอยู่ในไดเรกทอรีที่มีไฟล์จำนวนมากและไดเรกทอรีย่อยมากมาย

คุณต้องการรับรายชื่อไดเรกทอรีของไฟล์ทั้งหมดที่ขึ้นต้นด้วยตัวอักษร "d" คุณพิมพ์

ls d*

และสิ่งที่คุณได้รับกลับมาส่วนใหญ่จะเป็นไฟล์ในไดเรกทอรีย่อย (โดยเฉพาะไฟล์ในไดเรกทอรีย่อยที่ขึ้นต้นด้วย "d")

คุณจะแสดงเฉพาะไฟล์และชื่อไดเรกทอรีในไดเรกทอรีปัจจุบันของคุณได้อย่างไร

คำตอบ:


32

อ่าฉันเพิ่งพบมันในการอ่านหน้าคนที่ 6 มันเป็นพารามิเตอร์ "ไดเรกทอรี" ที่ไม่สมเหตุสมผลอย่างชื่อ

ls -d d* 

6
คุณใช้เวลาเพียงแค่ 29 วินาทีในการอ่านหน้าคนใหม่และเขียนคำตอบนี้ขึ้นมา? นั่นคือ :-) อย่างรวดเร็ว
balpha

1
นอกจากนี้ ls -dd * / จะแสดงเฉพาะไดเรกทอรี
innaM

6
balpha - ฉันค้นพบมันก่อนที่จะส่งคำถามจากนั้นก็รู้ว่าถ้าฉันใช้เวลานานกว่าจะคิดออกนี้ฉันก็อาจช่วยผู้ค้นหาในอนาคตออกมาและโพสต์ q และที่นี่
dggoldst

3
ยุติธรรมเพียงพอ ไม่มีอะไรผิดปกติกับมัน
balpha

1
และถึงกระนั้น CppLearner มันใช้งานได้จริง ลองมัน.
dggoldst

10

ฉันเชื่อว่าอีกวิธีแก้ปัญหาที่น่าสนใจ

ls | grep ^d

ให้ความยืดหยุ่นในการแสดงออกปกติ


3
และความซับซ้อนของการแสดงออกปกติ! ;-)
Chris Nava

1
นั่นเป็น soln ที่น่าสนใจและฉันชอบแนวคิดของการใช้ regexs แต่ถ้าคุณเพิ่มพารามิเตอร์เพิ่มเติมลงใน ls มันจะแตก เช่น "ls -l | grep ^ d"
dggoldst

เป็นจริง แต่ไม่ใช่พารามิเตอร์ทั้งหมด ls -a | grep "^ \." จะพิมพ์ไฟล์ "ซ่อน" ทั้งหมด
Kuer

อื่น ๆls flagsไม่ทำงานเมื่อใช้วิธีนี้ เช่นls -ltr | grep ^dไม่ทำงาน ในขณะที่คนแนะนำใน @dggoldst คำตอบไม่
hitesh israni

3

หา -maxdepth 1-name d * -type f

โอเคการใช้งานที่นี่เป็นเรื่องมากเกินไป เพียงแค่ตาด


1
แต่มันช่วยให้ฉันระบุรายการไดเร็กตอรี่โดยตรงของผู้ใช้แต่ละคน: find /home/ -maxdepth 1 -type d -user www-data. ขอบคุณและ +1
Cyril N.

1

ls -ld: มันจะให้รายชื่อของไดเรกทอรีโดยไม่ต้องลงไปในไดเรกทอรีย่อย

ตัวอย่าง:

ls -ld Cust*
Custคำสั่งนี้จะให้รายชื่อของไฟล์และไดเรกทอรีที่เริ่มต้นด้วย


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