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

สำหรับคำถามที่เกี่ยวข้องกับการค้นหายูทิลิตีบรรทัดคำสั่งเพื่อค้นหาไฟล์ในลำดับชั้นไดเรกทอรี ใช้แท็กนี้สำหรับคำถามเกี่ยวกับการค้นหาตัวเองหรือคำถามเกี่ยวกับปัญหาที่เกิดขึ้นจากการใช้ยูทิลิตี้ค้นหาบรรทัดคำสั่ง

3
bash - ฉันสามารถทำได้: ค้นหา ... - ทำสิ่งนี้ && ได้ไหม?
มีวิธีการรวมคำสั่งเชลล์สองคำสั่งที่เรียกใช้กับfind - execหรือไม่? เช่นการพิมพ์ไฟล์. csvทั้งหมดที่มีสตริง foo พร้อมกับการเกิดขึ้นของมันฉันต้องการจะทำ: find . -iname \*.csv -exec grep foo {} && echo {} \; แต่ทุบตีบ่นกับ "อาร์กิวเมนต์ที่หายไปเป็น '-exec'"
23 bash  find 

1
รายการไฟล์ตามเป้าหมาย symlink
ฉันจะรับรายชื่อไฟล์ (จากนั้นทำบางสิ่งบางอย่างกับรายการนั้น) โดยการกรองผ่านชื่อเป้าหมายลิงก์สัญลักษณ์ไม่ใช่ชื่อ symlink ตัวอย่างจากรายการต่อไปนี้ฉันสนใจเฉพาะไฟล์สี่ไฟล์แรก (เป้าหมายมีbar): foo -> /tmp/bar bar -> /home/me/bartoo baz -> /home/me/public/barthree zoo -> /usr/share/bar moo -> /tmp/foo roc -> /tmp/roc
23 find  symlink 

6
cat ไฟล์จำนวนมากเข้าด้วยกันตามลำดับที่ถูกต้อง
ฉันมีประมาณ 15,000 ไฟล์ที่มีชื่อfile_1.pdb, file_2.pdbฯลฯ ฉันสามารถแมวประมาณไม่กี่พันเหล่านี้ในการสั่งซื้อโดยการทำ: cat file_{1..2000}.pdb >> file_all.pdb อย่างไรก็ตามหากฉันทำสิ่งนี้กับไฟล์ 15,000 ไฟล์ฉันจะได้รับข้อผิดพลาด -bash: /bin/cat: Argument list too long ฉันได้เห็นปัญหานี้ได้รับการแก้ไขโดยการทำfind . -name xx -exec xxแต่จะไม่รักษาลำดับที่ไฟล์เข้าร่วม ฉันจะบรรลุสิ่งนี้ได้อย่างไร

3
อะไรคือความหมายของ {} + ในคำสั่ง -exec ของ find?
ฉันต้องการที่จะทราบความหมายของ{} +ในexecคำสั่งและสิ่งที่เป็นความแตกต่างระหว่างและ{} + {} \;ตามจริงแล้วอะไรคือความแตกต่างระหว่างสองสิ่งนี้: find . -type f -exec chmod 775 {} + find . -type f -exec chmod 775 {} \;
23 find 


5
จะค้นหาพา ธ ของไฟล์ตามชื่อไฟล์ได้อย่างไร?
ฉันพยายามค้นหาsettings.xmlไฟล์ในเครื่อง Ubuntu ของฉัน ฉันไม่รู้ว่ามันอยู่ที่ไหนและอยู่ในไดเรกทอรีไหน ฉันลองใช้มัน - ls -R | grep settings.xml แต่มันไม่ได้แสดงเส้นทางแบบเต็มให้ฉันเห็น .. มีคำสั่งอื่นอีกไหมที่ฉันต้องลองซึ่งสามารถให้เส้นทางแบบเต็มกับฉันได้หรือไม่
22 grep  find 

9
รักษาโครงสร้างไดเรกทอรีเมื่อย้ายไฟล์โดยใช้การค้นหา
ฉันสร้างสคริปต์ต่อไปนี้ซึ่งย้ายไฟล์วันเก่าตามที่กำหนดจากไดเรกทอรีต้นทางไปยังไดเรกทอรีปลายทาง มันทำงานได้อย่างสมบูรณ์แบบ #!/bin/bash echo "Enter Your Source Directory" read soure echo "Enter Your Destination Directory" read destination echo "Enter Days" read days find "$soure" -type f -mtime "-$days" -exec mv {} "$destination" \; echo "Files which were $days Days old moved from $soure to $destination" สคริปต์นี้ย้ายไฟล์ได้อย่างยอดเยี่ยมนอกจากนี้ยังย้ายไฟล์ของไดเรกทอรีย่อยต้นทาง แต่ไม่สร้างไดเรกทอรีย่อยลงในไดเรกทอรีปลายทาง ฉันต้องการใช้คุณสมบัติเพิ่มเติมนี้ในนั้น ด้วยตัวอย่าง /home/ketan …

8
วิธีค้นหาไฟล์จากไดเรกทอรีใด ๆ
ฉันพยายามที่จะมองหาไฟล์ที่เรียกว่าBook1 ในการทดสอบของฉันฉันพยายามค้นหาไฟล์ดังกล่าวและในการทดสอบนี้ฉันไม่รู้ว่าไฟล์นั้นอยู่ที่ไหน ฉันพยายามfind / -iname book1แต่ไม่มีผลลัพธ์ ฉันจะค้นหาไฟล์ชื่อ book1 โดยใช้บรรทัดคำสั่งได้อย่างไรหากฉันไม่รู้ว่าไฟล์อยู่ที่ไหน แก้ไข: สถานการณ์ของฉันอธิบายไว้ในรายละเอียดเพิ่มเติมด้านล่าง: ไม่รู้จักนามสกุลไฟล์ ไม่ทราบชื่อที่แน่นอน (เช่นตัวพิมพ์ใหญ่ตัวเลขและอื่น ๆ ) ไม่ทราบตำแหน่งของไฟล์

5
มีวิธีที่ง่ายกว่าในการ grep ไฟล์ทั้งหมดภายใต้ไดเรกทอรีหรือไม่?
เมื่อฉันต้องการค้นหาเนื้อหาทั้งหมดฉันจะใช้ต้นไม้ find . -type f -print0 | xargs -0 grep <search_string> มีวิธีที่ดีกว่าในการทำเช่นนี้ในแง่ของประสิทธิภาพหรือความกะทัดรัด?
21 grep  find 

3
ค้นหาไดเรกทอรี 50 อันดับแรกที่มีไฟล์ / ไดเรกทอรีมากที่สุดในระดับแรกหรือไม่
ฉันfindจะใช้เพื่อสร้างรายการไดเรกทอรีที่มีจำนวนไฟล์มากที่สุดได้อย่างไร ฉันต้องการรายชื่อจากจากมากไปน้อย ฉันเพียงต้องการเช่นรายการที่จะไป 1 /ระดับลึกและฉันมักจะใช้คำสั่งนี้จากด้านบนของระบบแฟ้มของฉันคือ
21 files  find 

1
เหตุใด 'ไม่พบ' แสดงไฟล์นี้
ใช้findกับgrepหนึ่งสามารถค้นหาไฟล์ที่ตรงกับรูปแบบ: # find | grep error ./solr-modifiedSolr4/SolrPhpClient/phpdocs/errors.html ./error_log ./includes/classes/error_log อย่างไรก็ตามการใช้findเพียงไฟล์เดียวไม่พบ: # find . -name error* ./error_log ./includes/classes/error_log ทำไมไม่findค้นหาerrors.htmlไฟล์เมื่อไม่ได้ใช้กับgrep? วิธีfindใช้ในการแสดงไฟล์นี้เช่นกัน?

2
ค้นหาไดเรกทอรีและไฟล์ที่มีสิทธิ์อื่นนอกเหนือจาก 775/664
ฉันกำลังย้ายเว็บไซต์จากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่งและ Git ไม่ได้จัดเก็บข้อมูลเมตาเช่นการอนุญาตไฟล์ ฉันต้องการค้นหาไดเรกทอรีและไฟล์ที่ไม่ใช่ 775/664 ตามลำดับ ตอนนี้ฉันกำลังใช้การคุมกำเนิดด้วยก้อนกรวดนี้: $ find . -type d -exec ls -la {} \; | grep ^d | grep -v ^drwxrwxr-x $ find . -type f -exec ls -la {} \; | grep -v ^d | grep -v ^-rw-rw-r-- | grep -v '.git' แม้ว่ามันจะใช้ได้ดี แต่ฉันรู้สึกว่ามันค่อนข้างแฮ็ก มีวิธีที่ดีกว่าในการทำเช่นนี้อาจเป็นวิธีมาตรฐานหรือฉันควรจะแฮ็ค? สิ่งนี้ทำงานบน …
21 permissions  find 

1
เพราะเหตุใดค้นหาด้วย -delete ลบไฟล์ในไดเรกทอรี / save / ของฉันเมื่อค้นหาโดยไม่ลบไม่สามารถค้นหาได้
saveฉันต้องการที่จะลบไฟล์ทั้งหมดที่อยู่ในต้นไม้ไดเรกทอรีปัจจุบันยกเว้นผู้ที่อยู่ใน ฉันรันคำสั่งนี้: find . \( -name save -prune \) -o -type f -ls | grep /save/ และไม่พบเลย แต่เมื่อฉันรันคำสั่งนี้: find . \( -name save -prune \) -o -type f -delete ไฟล์เหล่านั้นทั้งหมดใน / บันทึก / หายไป ฉันพลาดอะไรไป
20 find 


4
รับไฟล์ทั้งหมดที่ได้รับการแก้ไขในวันที่ที่ระบุ
เป็นไปได้หรือไม่ที่จะค้นหาphpไฟล์ทั้งหมดภายในไดเรกทอรีที่ได้รับการแก้ไขในวันที่แน่นอน ฉันกำลังใช้ find /var/www/html/dir/ -mtime -28 | grep '\.php' เพื่อรับไฟล์ที่แก้ไขภายใน 28 วันที่ผ่านมา แต่ฉันต้องการเพียงไฟล์ที่ได้รับการแก้ไขในวันที่ดังต่อไปนี้: 2011-02-08

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