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

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

6
รับรายการของไดเรกทอรีย่อยที่มีไฟล์ที่ชื่อมีสตริง
ฉันจะรับรายการไดเรกทอรีย่อยที่มีไฟล์ที่มีชื่อตรงกับรูปแบบเฉพาะได้อย่างไร โดยเฉพาะอย่างยิ่งฉันกำลังมองหาไดเรกทอรีที่มีไฟล์ที่มีตัวอักษร 'f' บางที่เกิดขึ้นในชื่อไฟล์ ตามหลักการแล้วรายการจะไม่ซ้ำกันและมีเส้นทางเท่านั้นหากไม่มีชื่อไฟล์

9
ค้นหาการค้นหาในไดเรกทอรีหลักแทนไดเรกทอรีย่อย
ฉันซ้อนอยู่ในแผนผังไฟล์และฉันต้องการค้นหาไดเรกทอรีหลักที่มีไฟล์อยู่ เช่นฉันอยู่ในกลุ่มของที่เก็บ Git ซ้อนกันและต้องการค้นหาไดเรกทอรี. git ที่ควบคุมไฟล์ที่ฉันกำลังอยู่ ฉันหวังว่าจะได้พบกับบางสิ่งบางอย่างเช่น -searchup -iname ".git"
45 shell  find 

3
วิธีคืนทั้งชื่อไฟล์และหมายเลขบรรทัดด้วย find … -exec grep
เมื่อใช้findงานฉันจะคืนชื่อไฟล์และหมายเลขบรรทัดเมื่อค้นหาสตริงได้อย่างไร ฉันจัดการเพื่อส่งคืนชื่อไฟล์ในคำสั่งเดียวและหมายเลขบรรทัดด้วยชื่ออื่น แต่ฉันไม่สามารถรวมพวกเขาได้ ชื่อไฟล์: find . -type f -exec grep -l 'string to search' {} \; หมายเลขบรรทัด: find . -type f -exec grep -n 'string to search' {} \;
45 grep  find 

7
ค้นหาไฟล์ในหลายชื่อโฟลเดอร์
ฉันพยายามที่จะรายการไฟล์ทั้งหมดจากdir1, dir2, dir3และdir4ซึ่งอาจจะเป็นที่ใดก็ได้ในเป็นไดเรกทอรีย่อยของฉันcwdโดยใช้findคำสั่ง ฉันพยายามต่อไปนี้โดยไม่ประสบความสำเร็จ: find . -type f -regextype posix-egrep -regex 'dir1/.+|dir2/.+|dir3/.+|dir4/.+' ฉันพยายามposix-extendedเช่นกัน ฉันจะแสดงรายการไฟล์เหล่านี้ได้อย่างไร

1
ค้นหาไฟล์ที่ไม่มีนามสกุล
สมมติว่าฉันมี: foo.txt bar baz.ooo ถ้าฉันใช้ls -1 !(*.*)แล้วฉันจะได้รับbarผล เยี่ยมมากตอนนี้ฉันต้องการได้ผลลัพธ์เหมือนกันกับการค้นหา - บางอย่างfind -regexที่สามารถทำงานได้ บันทึก: find -name !(*.*)ไม่ใช่คำตอบ!(*.*)ในขณะที่มันยังคงเป็นรูปกลมของ Bash ซึ่งฉันไม่สามารถใช้ได้
43 bash  shell  find  wildcards 

9
การค้นหาไฟล์“ ไม่ใช่ไบนารี” ทั้งหมด
เป็นไปได้หรือไม่ที่จะใช้findคำสั่งเพื่อค้นหาไฟล์ "ที่ไม่ใช่ไบนารี" ทั้งหมดในไดเรกทอรี? นี่คือปัญหาที่ฉันพยายามแก้ไข ฉันได้รับไฟล์เก็บถาวรจากผู้ใช้ windows ไฟล์เก็บถาวรนี้มีซอร์สโค้ดและไฟล์ภาพ ระบบการสร้างของเราเล่นได้ไม่ดีกับไฟล์ที่มีปลายแถวของ windows ฉันมีโปรแกรมบรรทัดคำสั่ง ( flip -u) ที่จะพลิกจบบรรทัดระหว่าง * ระวังและ windows ดังนั้นฉันต้องการทำอะไรแบบนี้ find . -type f | xargs flip -u อย่างไรก็ตามหากคำสั่งนี้ทำงานกับไฟล์รูปภาพหรือไฟล์สื่อไบนารีอื่น ๆ คำสั่งนี้จะทำให้ไฟล์เสียหาย ฉันรู้ว่าฉันสามารถสร้างรายการนามสกุลไฟล์และตัวกรองด้วยสิ่งนั้นได้ แต่ฉันอยากมีบางอย่างที่ไม่พึ่งพาฉันเพื่อให้รายการนั้นเป็นปัจจุบัน ดังนั้นมีวิธีการหาไฟล์ที่ไม่ใช่ไบนารีทั้งหมดในต้นไม้ไดเรกทอรีหรือไม่ หรือมีวิธีอื่นที่ฉันควรพิจารณาหรือไม่
43 files  find  text  newlines 

6
ย้ายไฟล์ทั้งหมดด้วยส่วนขยายที่แน่นอนจากหลายไดเรกทอรีย่อยลงในไดเรกทอรีเดียว
ฉันมีไฟล์. zip หลายไฟล์ในหลายไดเรกทอรี: Fol1/Fol2 Fol3 Fol4/Fol5 ฉันจะย้ายพวกเขาทั้งหมดไปยังโฟลเดอร์ฐานทั่วไปได้อย่างไร

5
ฉันจะค้นหาไฟล์ทั้งหมดที่ไม่มีสตริงข้อความได้อย่างไร?
ฉันสามารถใช้คำสั่งรวบรัดอะไรเพื่อค้นหาไฟล์ทั้งหมดที่ไม่มีสตริงข้อความ? ฉันลองสิ่งนี้ (โดยใช้ -v เพื่อสลับพารามิเตอร์ของ grep) โดยไม่มีโชค: find . -exec grep -v -l shared.php {} \; มีคนกล่าวว่าสิ่งนี้จะได้ผล: find . ! -exec grep -l shared.php {} \; แต่ดูเหมือนจะไม่ได้ผลสำหรับฉัน หน้านี้มีตัวอย่างนี้: find ./logs -size +1c > t._tmp while read filename do grep -q "Process Complete" $filename if [ $? -ne 0 ] ; …
40 grep  find  recursive 

3
ไพพ์คำสั่งหลังจาก xargs ไพพ์
HP-UX ***** B.11.23 U ia64 **** ใบอนุญาตผู้ใช้ไม่ จำกัด find . -type d -name *log* | xargs ls -la ให้ฉันชื่อไดเรกทอรี (คนที่มีlogอยู่ในชื่อไดเรกทอรี) ตามด้วยไฟล์ทั้งหมดในไดเรกทอรีนั้น ไดเรกทอรี /var/opt/SID/application_a/log/, /var/opt/SID/application_b/log/, /var/opt/SID/application_c/log/และอื่น ๆ ประกอบด้วยไฟล์บันทึก ฉันต้องการเพียงสอง logfiles ล่าสุดที่จะแสดงตามคำสั่งซึ่งผมมักจะพบการใช้lsls -latr | tail -2 ผลลัพธ์จะต้องมีลักษณะเช่นนี้ .. /var/opt/SID/application_a/log/ -rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1 -rw-rw-rw- 1 user1 user1 …
38 shell  find  pipe  xargs 

2
จะค้นหาและลบไฟล์ที่เก่ากว่าวันที่ระบุในยูนิกซ์ได้อย่างไร?
ฉันมีหนึ่งโฟลเดอร์สำหรับบันทึกด้วย 7 โฟลเดอร์ในนั้น โฟลเดอร์ทั้งเจ็ดนั้นก็มีโฟลเดอร์ย่อยอยู่ด้วยและโฟลเดอร์ย่อยเหล่านั้นก็มีโฟลเดอร์ย่อยด้วยเช่นกัน ฉันต้องการลบไฟล์ทั้งหมดที่เก่ากว่า 15 วันในโฟลเดอร์ทั้งหมดรวมถึงโฟลเดอร์ย่อยโดยไม่ต้องแตะโครงสร้างโฟลเดอร์นั่นหมายถึงเฉพาะไฟล์ mahesh@inl00720:/var/dtpdev/tmp/ > ls A1 A2 A3 A4 A5 A6 A7 mahesh@inl00720:/var/dtpdev/tmp/A1/ > ls B1 B2 B3 B4 file1.txt file2.csv
38 find 

3
ฉันจะลบคำสั่งการพิมพ์“ สิทธิ์ที่ถูกปฏิเสธ” ออกจากโปรแกรม find ได้อย่างไร
รหัส find / -name netcdf เอาท์พุต find: `/root/.dbus': Permission denied find: `/root/.gconf': Permission denied find: `/root/.gconfd': Permission denied find: `/root/.gnome': Permission denied find: `/root/.gnome2': Permission denied find: `/root/.gnome2_private': Permission denied
38 find 

5
วิธีการเปลี่ยนชื่อหลาย ๆ ไฟล์โดยใช้การค้นหา
ฉันต้องการเปลี่ยนชื่อหลายไฟล์ (file1 ... filen เป็น file1_renamed ... filen_renamed) โดยใช้คำfindสั่ง command: find . -type f -name 'file*' -exec mv filename='{}' $(basename $filename)_renamed ';' แต่รับข้อผิดพลาดนี้: mv: cannot stat ‘filename=./file1’: No such file or directory สิ่งนี้ไม่ทำงานเพราะชื่อไฟล์จะไม่ถูกตีความว่าเป็นตัวแปรเชลล์
37 shell  find 

1
การค้นหาไฟล์โดยเจ้าของและการอนุญาตไฟล์
ฉันพยายามที่จะไฟล์ที่เป็นเจ้าของและมีกลุ่มหลักของfind rootมีพารามิเตอร์ให้ค้นหาไฟล์เช่นนี้หรือไม่? เป็นสิ่งสำคัญที่ไฟล์ทั้งหมดในไดเรกทอรีที่ไม่ได้เป็นเจ้าของrootดังนั้นฉันต้องการตรวจสอบเป็นระยะเพื่อให้แน่ใจว่าบางคนบนเซิร์ฟเวอร์ไม่ได้ตั้งใจสร้างไฟล์ที่เป็นเจ้าของโดยroot(คือฉัน) แน่นอนใช้chown -R user:user /pathงานได้ แต่ฉันต้องการตรวจสอบ
35 find 

8
รับรายชื่อไดเรกทอรีพร้อมค้นหา
ฉันรู้ว่าฉันสามารถทำได้เพื่อรับรายชื่อไดเรกทอรี: find . -type d -maxdepth 1 ผลลัพธ์มีลักษณะดังนี้: . ./foo ./bar ./ฉันชอบรายชื่อโดยไม่ต้อง มีวิธีหาเอาท์พุทเพียงชื่อดิบหรือไม่? ฉันพยายามส่งรายการไปที่ stat เพื่อจัดรูปแบบ แต่ให้ผลลัพธ์แบบเดียวกัน: find . -type d -maxdepth 1 -print0 | xargs -0 stat -f '%N'
35 find  directory 

4
เอาต์พุต“ find” ที่สัมพันธ์กับไดเร็กทอรี
ฉันต้องการใช้findเพื่อแสดงรายการไฟล์และไดเรกทอรีทั้งหมดซ้ำในรูทที่กำหนดสำหรับการcpioดำเนินการ อย่างไรก็ตามฉันไม่ต้องการให้รูทไดเร็กทอรีนั้นปรากฏในพา ธ ตัวอย่างเช่นปัจจุบันฉันได้รับ: $ find diskimg diskimg diskimg/file1 diskimg/dir1 diskimg/dir1/file2 แต่ฉันต้องการได้รับ file1 dir1 dir1/file2 (โปรดทราบว่ารูทนั้นไม่ได้อยู่ในผลลัพธ์ที่ฉันต้องการ แต่ก็สามารถกำจัดได้อย่างง่ายดายtail) ฉันใช้ OS X และฉันไม่ต้องการติดตั้งเครื่องมือพิเศษใด ๆ (เช่น GNU พบ) ถ้าเป็นไปได้เนื่องจากฉันต้องการแบ่งปันสคริปต์ที่ฉันเขียนกับผู้ใช้ OS X คนอื่น ฉันรู้ว่าสามารถทำได้ด้วยcutการตัดรายชื่อรูทออก แต่นั่นดูเหมือนจะเป็นวิธีแก้ปัญหาที่ไม่ดี มีวิธีแก้ปัญหาที่ดีกว่านี้ไหม?
34 find 

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