ฉันพยายามแสดงเฉพาะไฟล์ที่ซ่อนอยู่ แต่ไม่รู้ว่าจะทำอย่างไร
ใช้งานได้ (แต่การจับคู่ยังจุดในที่อื่น ๆ )
ls -la | grep '\.'
พยายามเพิ่ม^แต่ไม่พบวิธีแก้ปัญหา
ls -la | awk '$9 ~ /^\./'จะ.
ฉันพยายามแสดงเฉพาะไฟล์ที่ซ่อนอยู่ แต่ไม่รู้ว่าจะทำอย่างไร
ใช้งานได้ (แต่การจับคู่ยังจุดในที่อื่น ๆ )
ls -la | grep '\.'
พยายามเพิ่ม^แต่ไม่พบวิธีแก้ปัญหา
ls -la | awk '$9 ~ /^\./'จะ.
คำตอบ:
ls -ld .* จะทำในสิ่งที่คุณต้องการ
find . -type f -name '\.*' -print
จะต้องใช้งานได้หากคุณต้องการแสดงรายการทุกไฟล์ที่ซ่อนอยู่ในลำดับชั้นของไดเรกทอรี
หากคุณต้องการแยกวิเคราะห์lsผลลัพธ์คุณต้องเพิ่ม^ที่จุดเริ่มต้นของ regex และไม่ใช้-lตัวเลือก การใช้-lสาเหตุแต่ละบรรทัดเอาต์พุตเริ่มต้นด้วยข้อมูลไฟล์หรือโฟลเดอร์ไม่ใช่ชื่อไฟล์หรือโฟลเดอร์ ดังนั้นคุณควรใช้ดังนี้:
ls -Ad | grep '^\.'
หรือคุณสามารถทำได้ด้วยprintfbash builtin:
printf "%s\n" .*
หากคุณใช้zshคุณสามารถใช้:
print -l .*
ต่อไปนี้เป็นสองวิธีในการค้นหาไฟล์ที่ซ่อนอยู่เท่านั้น
find . -maxdepth 1 -name ".*" -type f -ls
หรือ
find . -maxdepth 1 -name ".*" -type f -printf "%P \n"
ใช้-maxdepthเพื่อระบุระยะเวลาที่คุณต้องการค้นหาในแผนผังไดเรกทอรี
การปรับปรุงคำตอบของ Flup :
ls -lad .[!.]* ..?*
นี้จะแสดงรายการไฟล์ทั้งหมดที่มีชื่อขึ้นต้นด้วยจุดและที่มีค่ามิได้...
โปรดทราบว่าหากคุณต้องการไพพ์เอาท์พุทของlsถึงgrep(ซึ่งตามที่ระบุโดย devnullจะไม่เป็นความคิดที่ดี) ให้แน่ใจว่าคุณใช้\lsหรือcommand lsเพราะถ้าlsเป็นนามแฝงเพื่อแสดงเอาต์พุตสี (เช่น Debian เป็นตัวอย่าง) เอาท์พุตประกอบด้วย ANSI escape sequences เพื่อสร้างเอาท์พุตสีซึ่งจะทำให้การค้นหาของคุณดีขึ้นgrepหากรูปแบบของมันถูกยึดไว้ที่จุดเริ่มต้นของบรรทัด
-A(แทนที่จะ-a) เพื่อเพิกเฉย., ...
-Aแตกต่างจาก-aสำหรับไดเรกทอรีที่lsสืบทอดมา แต่ทั้งคู่จะถูกละเว้น (เท่ากัน) และไร้ประโยชน์สำหรับชื่อที่ระบุในบรรทัดคำสั่งที่มี-dผลบังคับใช้ นอกจากนี้หากใช้lsนามแฝง--color=auto แล้วการวางท่อก็โอเค เท่านั้น--color=alwaysหรือ--colorทำให้เกิดปัญหา
วิธีการแก้ปัญหาของ val0x00ff นั้นดีมาก แต่ก็ลืมการซ่อนไดเรกทอรี
หากคุณต้องการไฟล์ที่ ซ่อนอยู่และ ไดเรกทอรีที่ซ่อนอยู่โดยไม่ต้อง และ .. :
find -maxdepth 1 -regex '\./\..+' -printf "%P\n"
find . \( -type f -o -type d \) -name '\.*' -print; ใช้ในmaxdepthกรณีที่จำเป็น
ด้านล่างมีขนาดกะทัดรัดและรองรับหลายรุ่น
1) แสดงไฟล์ที่ซ่อนอยู่ไดเรกทอรีและไดเรกทอรีย่อย
find . | grep "^\./\."
2) แสดงไดเรกทอรีที่ซ่อนอยู่และไดเรกทอรีย่อยเท่านั้น
find . -type d | grep "^\./\."
3) แสดงไฟล์ที่ซ่อนเฉพาะในปัจจุบันและไดเรกทอรีย่อย
find . -type f | grep "^\./\."
4) แสดงไฟล์และไดเรกทอรีที่ซ่อนอยู่ในโฟลเดอร์ปัจจุบัน
find . -maxdepth 1 | grep "^\./\."
คุณสามารถลอง:
find . -maxdepth 1 -type f -name '\.*' -print
find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -print
แน่นอนคุณสามารถใช้maxdepthค่าที่แตกต่างหรือลบออกอย่างสมบูรณ์ มีประโยชน์มากถ้าคุณต้องการสำรวจระหว่างไดเรกทอรี ( -type d) หรือไฟล์ปกติ( type f) หรือทั้งสองอย่างและรวมกับฟังก์ชั่นอื่น ๆ เช่น:
(เช่นเวลาที่แก้ไขล่าสุดตามตัวอย่าง@piroux - เสร็จสมบูรณ์โดย@ jeroen-wiert-pluimers )
find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -exec stat -c %y {} \; -printf "%P\t"
คุณสามารถลอง :
ls -a |grep -E "^\."
^ ระบุว่าเป็นจุดเริ่มต้นของเนื้อหาที่มี regexp
lsไม่ใช่ความคิดที่ยอดเยี่ยม แต่สิ่งที่คุณพยายามจะทำงานถ้าคุณใช้สมอ^เพื่อแสดงจุดเริ่มต้นของการแข่งขันls -la | grep '^\.'