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

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

2
คำอธิบายของคำสั่ง% ใน find -printf
find /tmp -printf '%s %p\n' |sort -n -r | head คำสั่งนี้ทำงานได้ดี แต่มี%s %pตัวเลือกอะไรบ้างที่นี่? มีตัวเลือกอื่น ๆ ที่สามารถใช้ได้หรือไม่?
20 find 


3
ฉันจะสแกนโดยใช้ค้นหาไฟล์ทั้งหมดที่มีการเรียกใช้บิตเซ็ตได้อย่างไร
ฉันต้องการเขียนสคริปต์แก้ไขสิทธิ์ที่ใช้การค้นหาเพื่อแก้ไขสิทธิ์ในไฟล์ ส่วนใหญ่สิ่งที่ฉันต้องการคือคำสั่ง find ที่สามารถแสดงรายการไฟล์ทั้งหมดด้วยชุดบิตเรียกใช้โดยไม่คำนึงถึงสิทธิ์อื่น ๆ ของไฟล์ (นั่นคือเคล็ดลับ)
19 find 


1
วิธีการทำ 'หัว' และ 'หาง' ในอินพุตที่มีการ จำกัด ด้วย null ในทุบตี?
findคำสั่งสามารถส่งออกชื่อของไฟล์เป็นสตริงที่คั่นด้วย null (ถ้า-print0มีให้) และxargsสามารถใช้พวกเขาด้วยการ-0เปิดตัวเลือก แต่ในระหว่างมันเป็นเรื่องยากที่จะจัดการกับคอลเลกชันของไฟล์ - sortคำสั่งมี-zสวิทช์ที่ทำให้มันเป็นไปได้ที่จะจัดเรียงไฟล์เหล่านั้น แต่headและtailไม่ได้พวกเขา ฉันจะทำheadและtailป้อนข้อมูลด้วยตัวคั่นที่ไม่มีค่าในวิธีที่สะดวกได้อย่างไร (ฉันสามารถสร้างสคริปต์ทับทิมสั้นและช้าได้เสมอ แต่ฉันหวังว่าอาจมีวิธีที่ดีกว่า)

2
วิธีการใช้ไดเรกทอรี chmod ซ้ำโดยไม่ส่งผลกระทบต่อไฟล์?
หลังจากที่ฉันใช้chmod -Rกับไดเรกทอรีแล้วสิทธิ์จะเปลี่ยนสำหรับทุกสิ่งภายใน (ไฟล์และไดเรกทอรี) ฉันจะเพิ่มสิทธิ์ดำเนินการ / ค้นหา ( x) ในไดเรกทอรีโดยไม่ต้องแก้ไขไฟล์ได้อย่างไร
18 shell  find  chmod 

5
find: อาร์กิวเมนต์ที่ขาดหายไปถึง -exec
ฉันพยายามเรียกใช้คำสั่งต่อไปนี้: find a/folder b/folder -name *.c -o -name *.h -exec grep -I foobar '{}' + นี่กำลังส่งคืนข้อผิดพลาด: find: missing argument to -exec ฉันไม่เห็นว่ามีอะไรผิดปกติกับคำสั่งนี้เนื่องจากดูเหมือนจะตรงกับหน้าคน: คำสั่ง -exec {} + ตัวแปรของตัวเลือก -exec นี้จะรันคำสั่งที่ระบุในไฟล์ที่เลือก แต่บรรทัดคำสั่งจะถูกสร้างขึ้นโดยการต่อท้ายชื่อไฟล์ที่เลือกแต่ละชื่อที่ท้าย จำนวนรวมของคำสั่งจะน้อยกว่าจำนวนไฟล์ที่ตรงกัน บรรทัดคำสั่งถูกสร้างขึ้นในลักษณะเดียวกับที่ xargs สร้างบรรทัดคำสั่ง อนุญาตเพียงหนึ่งอินสแตนซ์ของ '{}' ภายในคำสั่ง คำสั่งจะถูกดำเนินการในไดเรกทอรีเริ่มต้น ฉันก็ลอง: find a/folder b/folder -name *.c -o -name *.h -exec grep -I …
18 find 

5
ฉันจะดำเนินการกับไฟล์ทั้งหมดที่มีนามสกุลเฉพาะในโฟลเดอร์ย่อยอย่างสง่างามได้อย่างไร?
ทางออกที่ดีที่สุดของฉันในปัจจุบันคือ: for i in $(find . -name *.jpg); do echo $i; done ปัญหา: ไม่จัดการช่องว่างในชื่อไฟล์ หมายเหตุ: ฉันจะรักวิธีการทำเช่นนี้กราฟิกเช่นคำสั่ง "ต้นไม้"
18 bash  shell  find 

3
ท่อพบใน grep -v
ฉันพยายามค้นหาไฟล์ทั้งหมดที่เป็นประเภทที่แน่นอนและไม่มีสตริงที่แน่นอน ฉันพยายามที่จะไปเกี่ยวกับมันโดยท่อค้นหาเพื่อ grep -v ตัวอย่าง: find -type f -name '*.java' | xargs grep -v "something something" ดูเหมือนจะใช้งานไม่ได้ ดูเหมือนว่าจะส่งคืนไฟล์ทั้งหมดที่พบคำสั่ง สิ่งที่ฉันพยายามจะทำคือค้นหาไฟล์. java ทั้งหมดที่ตรงกับชื่อไฟล์ที่แน่นอน (เช่นลงท้ายด้วย 'Pb' ใน SessionPb.java) และไม่มี 'ขยาย SomethingSomething "ข้างใน ความสงสัยของฉันคือการที่ฉันทำผิด ดังนั้นคำสั่งควรมีลักษณะอย่างไรแทน
18 grep  find  pipe 

5
ลบโฟลเดอร์ทั้งหมดภายในโฟลเดอร์ยกเว้นที่มีชื่อเฉพาะ
ฉันต้องการลบโฟลเดอร์ทั้งหมดภายในโฟลเดอร์โดยใช้สคริปต์รายวัน ต้องทิ้งโฟลเดอร์ในวันนั้น โฟลเดอร์ 'myfolder' มี 3 โฟลเดอร์ย่อย: 'test1', 'test2' และ 'test3' ฉันต้องลบทั้งหมดยกเว้น 'test2' ฉันพยายามจับคู่ชื่อที่แน่นอนที่นี่: find /home/myfolder -type d ! -name 'test2' | xargs rm -rf หรือ find /home/myfolder -type d ! -name 'test2' -delete คำสั่งนี้จะพยายามลบโฟลเดอร์หลัก 'myfolder' ด้วยเสมอ! มีวิธีหลีกเลี่ยงสิ่งนี้หรือไม่?
18 linux  find  delete 

2
ทำความเข้าใจกับตัวเลือก -exec (1) (เครื่องหมายปีกกาและเครื่องหมายบวก)
ใช้คำสั่งต่อไปนี้ใครช่วยอธิบายหน่อยได้ไหมว่าอะไรคือจุดประสงค์สำหรับการจัดฟันส่วนปลาย ({}) และเครื่องหมายบวก (+)? และคำสั่งจะทำงานแตกต่างกันอย่างไรหากถูกแยกออกจากคำสั่ง find . -type d -exec chmod 775 {} +
17 find 

1
หา - maxdepth 0 ไม่ส่งคืนเอาต์พุตใด ๆ ให้ฉัน
ฉันพยายามที่จะเข้าใจวิธีการใช้find -maxdepth 0ตัวเลือก ฉันมีโครงสร้างไดเรกทอรีด้านล่าง --> file1 --> parent --> child1 --> file1 --> file2 --> child2 --> file1 --> file2 --> file1 ตอนนี้ฉันรันfindคำสั่งของฉันดังต่อไปนี้ find ./parent -maxdepth 0 -name "file1" find ./ -maxdepth 0 -name "file1" find . -maxdepth 0 -name "file1" หากไม่มีfindคำสั่งข้างต้นfile1จะถูกส่งคืน จากหน้าคนของfindฉันเห็นข้อมูลด้านล่าง -maxdepth 0 หมายถึงใช้การทดสอบและการดำเนินการกับอาร์กิวเมนต์บรรทัดคำสั่งเท่านั้น ฉันค้นหาตัวอย่างด้วย-maxdepth 0ตัวเลือกและไม่พบตัวอย่างที่เหมาะสม findรุ่นของฉันคือ find …
17 find 

7
วิธีค้นหาไฟล์ที่มีการตั้งค่าแอตทริบิวต์ที่ไม่เปลี่ยนรูปแบบ?
สำหรับเหตุผลการตรวจสอบการกำหนดค่าฉันต้องการค้นหาไฟล์ระบบ ext3 ของฉันเพื่อหาไฟล์ที่มีชุดคุณลักษณะที่ไม่เปลี่ยนรูปแบบ (ผ่านchattr +i) ฉันไม่พบตัวเลือกใด ๆfindหรือคล้ายกันที่ทำสิ่งนี้ ณ จุดนี้ฉันเกรงว่าฉันจะต้องเขียนสคริปต์ของตัวเองเพื่อแยกวิเคราะห์lsattrผลลัพธ์สำหรับแต่ละไดเรกทอรี มียูทิลิตี้มาตรฐานที่ให้วิธีที่ดีกว่าหรือไม่?
17 find  ext3 

5
ฉันจะใช้การค้นหาได้อย่างไรเมื่อชื่อไฟล์มีช่องว่าง
ฉันต้องการไพพ์ชื่อไฟล์ไปยังโปรแกรมอื่น แต่พวกมันทั้งหมดทำให้หายใจไม่ออกเมื่อชื่อมีช่องว่าง สมมติว่าฉันมีไฟล์ที่เรียกว่า foo bar ฉันfindจะคืนชื่อที่ถูกต้องได้อย่างไร เห็นได้ชัดว่าฉันต้องการ: foo\ bar หรือ: "foo bar" แก้ไข : ฉันไม่ต้องการผ่านxargsฉันต้องการดึงสตริงที่จัดรูปแบบอย่างถูกต้องออกมาfindเพื่อที่ฉันจะได้ไพพ์สตริงของชื่อไฟล์โดยตรงไปยังโปรแกรมอื่น
17 find 

2
ค้นหาเฉพาะไฟล์แรกที่ตรงกับการใช้ค้นหา?
สมมติว่าอาจมี*.txtไฟล์หลายร้อยไฟล์ในไดเรกทอรี ฉันต้องการค้นหา*.txtไฟล์สามไฟล์แรกเท่านั้นจากนั้นออกจากกระบวนการค้นหา วิธีการบรรลุสิ่งนี้โดยใช้findยูทิลิตี้? ฉันผ่านไปอย่างรวดเร็วบนหน้าเพจของมันดูเหมือนจะไม่มีตัวเลือกสำหรับสิ่งนี้
17 find 

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