รายการไฟล์ / 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'เช่น