รายการไฟล์ / dirs ทั้งหมดในหรือด้านล่างไดเรกทอรีปัจจุบันที่ตรงกับ 'ชื่อไฟล์'
รายการไฟล์ / dirs ทั้งหมดในหรือด้านล่างไดเรกทอรีปัจจุบันที่ตรงกับ 'ชื่อไฟล์'
คำตอบ:
เทียบเท่าโดยตรงคือ
find . -iname <filename>
ซึ่งจะแสดงรายการไฟล์และไดเรกทอรีทั้งหมดที่เรียกว่า<filename>
ในไดเรกทอรีปัจจุบันและไดเรกทอรีย่อยใด ๆ โดยไม่สนใจขนาดตัวพิมพ์
หากเวอร์ชันการค้นหาของคุณไม่รองรับ-iname
คุณสามารถใช้-name
แทน โปรดทราบว่าแตกต่าง-iname
กัน-name
เป็นกรณี ๆ ไป
หากคุณต้องการแสดงรายการไฟล์ที่เรียกว่า<filename>
และไม่ใช่ไดเรกทอรีเท่านั้นให้เพิ่ม-type f
find . -iname <filename> -type f
หากคุณต้องการใช้ไวด์การ์ดคุณต้องใส่เครื่องหมายคำพูดล้อมรอบมันเช่น
find . -iname "*.txt" -type f
มิฉะนั้นเปลือกจะขยายออก
ตามที่คนอื่น ๆ ชี้คุณสามารถทำได้:
find . | grep "\.txt$"
grep
จะพิมพ์บรรทัดตามนิพจน์ทั่วไปซึ่งมีประสิทธิภาพมากกว่า wildcard แต่มีไวยากรณ์แตกต่างกัน
ดูman find
และman grep
สำหรับรายละเอียดเพิ่มเติม
<filename>
เป็นเครื่องหมายสำหรับ userinput เป็นนิสัยที่ไม่ดีในสภาพแวดล้อมบรรทัดคำสั่งที่< and >
ส่วนใหญ่มีความหมายเฉพาะ ฉันขอแนะนำให้ใช้filename
บางทีอาจเป็นชื่อไฟล์เพื่อเน้น คนส่วนใหญ่จะเข้าใจและผู้ที่จะไม่ทำอาจเป็นอันตรายเมื่อไม่เข้าใจว่าพวกเขาไม่ควรจะเข้าสู่ระบบน้อยกว่าหรือมากกว่า - มากกว่า
<filename>
เป็นข้อตกลงในเอกสาร UNIX จำนวนมากดังนั้นฉันคิดว่ามันมีประโยชน์สำหรับผู้คนที่จะรับรู้ แต่ฉันเห็นด้วยว่าFILENAME
อาจเข้าใจง่ายกว่า
find -iname <filename>
ดีกว่าเนื่องจากไม่คำนึงถึงขนาดตัวพิมพ์เช่น DOS
เปลือกบางใบอนุญาตls **/filename
ซึ่งค่อนข้างสะดวก
shopt -s globstar; echo **/filename
find . -name "filename"
มันยังใช้งานได้ใน zsh
shopt -s globstar
มันอาจจะเหมาะกับคุณ การวนซ้ำแบบซ้ำเป็นคุณสมบัติที่มีเฉพาะในเปลือกหอยบางตัวและบางครั้งก็ไม่ได้เปิดตามค่าเริ่มต้น
shopt
globstar on
ตอนนี้มันทำงานเหมือนจับใจ ขอบคุณมาก.
คุณสามารถทำได้ด้วย
find . | egrep filename
find . -regextype posix-egrep -regex '.*filename.*'
(ฉันไม่รู้ว่าegrep
ส่วนนั้นสำคัญหรือไม่ แต่คุณใช้egrep
ในคำตอบของคุณดังนั้นฉันจึงรวมมันไว้ด้วย)
grep
ใช้นิพจน์ทั่วไปในขณะที่คำสั่ง DOS ใช้เชลล์สัญลักษณ์แทน
find . -name "*.*"
จะไม่ทำสิ่งที่คุณคาดหวังจากพื้นหลัง DOS Globs อยู่ใกล้พอที่จะเป็นที่รู้จักแม้ว่าในขณะที่ regexes เป็นสัตว์ร้ายใหม่ทั้งหมด
*.*.*
ทำในสมัยที่ทันสมัยเช่น windows cmd? เกี่ยวกับ*.*.*.*
อะไร
มันอาจเป็น: tree -if </your/path>
หรือ'pwd'
เป็นเส้นทาง
<filename>
มีสัญลักษณ์แทนการใช้คำพูดที่อยู่รอบ ๆfind . -name '*.txt'
เช่น