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

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

5
กำลังค้นหาซับสตริงในไฟล์ข้ามไดเรกทอรีย่อยด้วยคำสั่งในตัวเดียวหรือไม่
ใน Windows ถ้าฉันต้องการค้นหาสตริงในไฟล์ทั้งหมดในไดเรกทอรีย่อยทั้งหมดฉันจะทำสิ่งที่ต้องการ findstr /C:"the string" /S *.h อย่างไรก็ตามในลินุกซ์ (พูด, อูบุนตู) ฉันได้พบไม่มีวิธีอื่นนอกเหนือจากคำสั่งประปาบางส่วนที่เกี่ยวข้องกับการfind, xargsและgrep(ตัวอย่างที่หน้านี้: ? ฉันจะซ้ำ grep ผ่านไดเรกทอรีย่อย ) อย่างไรก็ตามคำถามของฉันแตกต่างกัน: มีคำสั่งในตัวเดียวที่ทำงานผ่านเวทมนตร์นี้โดยไม่ต้องเขียนเชลล์สคริปต์ของฉันหรือไม่
10 linux  grep  find  recursive 

3
วิธีการเปิดหลายไฟล์จาก `find` output?
ฉันรู้ว่าฉันสามารถเปิดหลายไฟล์ที่พบใน dir ดังนี้: find -name *.foo -xargs <command> {} \; วิธีนี้ใช้งานได้ แต่เมื่อพยายามเปิด textfiles แบบกลุ่มใน gedit ในเวลาเดียวกันมันจะเปิดขึ้นมาอย่างต่อเนื่อง (เมื่อปิดไฟล์หนึ่งไฟล์จะเปิดขึ้นอีกอันหนึ่ง) ฉันต้องการเปิดไฟล์ทั้งหมดในเวลาเดียวกัน ฉันจะบรรลุสิ่งนี้ได้อย่างไร
10 bash  find  xargs 

5
ทำไมคำสั่ง“ find | grep 'filename'” ช้ากว่า“ find 'filename'” มากไหม?
ฉันลองทั้งคำสั่งและคำสั่ง find | grep 'filename' ช้ากว่าfind 'filename' คำสั่งแบบธรรมดาหลาย ๆ ครั้ง อะไรจะเป็นคำอธิบายที่เหมาะสมสำหรับพฤติกรรมนี้

1
ลบไฟล์ที่เก่ากว่า 500 วัน
ฉันมีไดเรกทอรีพร้อมไฟล์จากปี 2010 .. ฉันต้องการลบไฟล์ทั้งหมดที่เก่ากว่า 500 วันและฉันลองทำสิ่งนี้: find /var/log/arc/* -type f -mtime +500 -delete {}\; แต่ฉันได้รับสิ่งนี้: -bash: /usr/bin/find: Argument list too long ฉันรู้ว่านี่หมายความว่ามีไฟล์มากเกินไปและfindไม่สามารถจัดการได้ แต่ถึงฉันจะใส่+2000อันไหนมากกว่า 3 ปีฉันก็ยังได้ สิ่งที่ฉันหายไปที่นี่

2
จะแยกโฟลเดอร์ proc และ sys ออกจากการค้นหาด้วยคำสั่ง find ได้อย่างไร
ฉันต้องการรันสคริปต์ที่เลือกเส้นทางไดเรกทอรีแบบสุ่ม: find / -type d | shuf -n1 น่าเสียดายที่ฉันได้รับข้อความแสดงข้อผิดพลาดเกี่ยวกับข้อห้ามในการเข้าสู่บางไดเรกทอรี ฉันจะแยกไดเรกทอรีออกจากการค้นหาด้วยการค้นหาได้อย่างไร

2
ฉันจะแสดงรายการไฟล์ที่ไม่มี symlink ได้อย่างไร
ฉันมีไดเรกทอรี "myfiles" ขนาดใหญ่เต็มไปด้วยเอกสารเบ็ดเตล็ดและไม่ต้องการแก้ไขโครงสร้าง ฉันจึงสร้าง (หลาย) ไดเรกทอรีอื่น ๆ สำหรับแต่ละชั้นของเอกสาร ตัวอย่างเช่นฉันมีไดเรกทอรี "images" ซึ่งมีsymlink ไปยังแต่ละไฟล์.jpgหรือ.cr2ในไดเรกทอรี "myfiles" พร้อมไฟล์อธิบายอื่น ๆ สำหรับแต่ละ symlink (ที่มีชื่อไฟล์เดียวกัน) พร้อมคำอธิบายและข้อมูลเมตาอื่น ๆ symlink ในไดเร็กทอรี / images อาจมีชื่อแตกต่างจากไฟล์ที่ลิงก์ดั้งเดิม ฉันพยายามหาวิธีที่ง่ายที่สุดเพื่อให้แน่ใจว่าไฟล์รูปภาพทุกไฟล์ในไดเรกทอรี "myfiles" มี symlink ในไดเรกทอรี "images" ดูตัวอย่างของโครงสร้างโฟลเดอร์ /myfiles/a.doc /myfiles/b.jpg /myfiles/c.cr2 /myfiles/d.mov ควรส่งผล /images/b_800x600.jpg /images/b_800x600.desc /images/c_3820x5640.cr2 /images/c_3820x5640.cr2

2
ลบไฟล์ทั้งหมดซ้ำโดยไม่ลบไดเรกทอรี
ฉันต้องการที่จะ "ล้าง" ไฟล์ทั้งหมดของไดเรกทอรีรวมถึงไฟล์ทั้งหมดในไดเรกทอรีย่อย แต่ฉันต้องการที่จะออกจากไดเรกทอรีย่อยในสถานที่ ฉันเข้าใจrm -rว่ามันจะลบไดเรกทอรีย่อยด้วยเช่นกัน ฉันไม่ต้องการลบไฟล์ที่ซ่อนอยู่ (จุด) สิ่งนี้สามารถทำได้?
10 command-line  find  rm 

2
`ค้นหา -path 'อธิบาย
คำสั่งมีตัวเลือกfind -pathฉันเข้าใจว่าต้องกำหนดว่าจะเริ่มมองหา [รู้จักกันทั่วไปว่า "เส้นทาง"] พยายามหาว่ามันใช้ทำอะไรฉันพบตัวอย่างมากมายที่ใช้find -path -pruneเพื่อแยกเส้นทางบางอย่าง คำถาม : คำอธิบายสิ่งที่find -pathทำ; ตัวเลือกนี้ใช้สำหรับอะไร โปรดทราบ: ดูเหมือนจะชัดเจนสำหรับฉัน แต่แล้วก็ไม่ทำงานอย่างที่ฉันคาดไว้ ฉันทำงานผ่านmanและinfoหน้าต่างๆ แต่ฉันไม่เข้าใจความหมายทั้งหมดของตัวเลือกนี้ แก้ไขตามที่ผมเข้าใจมันfind /some/path -name stuffควรเริ่มมองหา "สิ่งที่" เริ่มต้นในไดเรกทอรีซึ่งเป็นไดเรกทอรีย่อยของpath someโรงงาน แต่แล้ว-pathตัวเลือกจะกำหนดอะไร คำจำกัดความรวมถึงประโยคเช่น ไม่รักษา/หรือ.เป็นพิเศษ ไม่ได้ช่วยอะไรมากและทำให้สับสนมากขึ้น
10 find 

4
ค้นหาไดเรกทอรีที่ไม่มีไดเรกทอรีย่อย
ฉันกำลังเขียนสคริปต์คือ ksh จำเป็นต้องค้นหาชื่อไดเรกทอรีทั้งหมดภายใต้ไดเรกทอรีปัจจุบันซึ่งมีเฉพาะไฟล์เท่านั้นไม่ใช่ไดเรกทอรีย่อย ฉันรู้ว่าฉันสามารถใช้ls -alRและแยกวิเคราะห์เอาต์พุตแบบซ้ำ ๆ สำหรับตัวอักษรตัวแรกในฟิลด์แรก ( dสำหรับไดเรกทอรี) ฉันคิดว่าawkเป็นวิธีที่ดีที่สุดในการแยกวิเคราะห์และค้นหา ตัวอย่างเช่นls -alเอาต์พุตแบบง่ายในไดเร็กทอรีปัจจุบัน: drwxr-xr-x 22 af staff 748 18 Mar 22:21 . drwxr-xr-x 5 root admin 170 17 Mar 18:03 .. -rw------- 1 af staff 3 17 Mar 16:37 .CFUserTextEncoding drwxr-xr-x 5 af staff 170 17 Mar 17:12 Public drwxr-xr-x 9 …
10 shell  find  directory  ls  ksh 

7
ใช้ mogrify เพื่อปรับขนาดไฟล์ขนาดใหญ่ในขณะที่ไม่สนใจไฟล์ขนาดเล็ก
ฉันใช้คำสั่งต่อไปนี้: mogrify -resize '400x400>' *.png สังเกตเห็น ">" สมมุติว่ามันจะไม่สนใจไฟล์ที่มีขนาดเล็กกว่า แต่ถึงแม้ว่ามันจะไม่ปรับขนาดมันก็จะทำการแก้ไข (วันที่แก้ไขและขนาดไฟล์จะเปลี่ยนไป) มีวิธีทำให้จริงเพียงแค่ปล่อยไฟล์ขนาดเล็กเพียงอย่างเดียวหรือไม่ ฉันต้องการหลีกเลี่ยงการเขียนที่ไม่จำเป็นหลายพันครั้ง
10 find  mogrify 

6
การค้นหาไฟล์ทั้งหมดที่มีนามสกุลที่กำหนดซึ่งมีชื่อฐานคือชื่อของไดเรกทอรีหลัก
ฉันต้องการค้นหา*.pdfไฟล์ทุกไฟล์ซ้ำในไดเรกทอรี~/fooที่มีชื่อฐานตรงกับชื่อของไดเรกทอรีหลักของไฟล์ ตัวอย่างเช่นสมมติว่าโครงสร้างไดเรกทอรี~/fooมีลักษณะเช่นนี้ foo ├── dir1 │ ├── dir1.pdf │ └── dir1.txt ├── dir2 │ ├── dir2.tex │ └── spam │ └── spam.pdf └── dir3 ├── dir3.pdf └── eggs └── eggs.pdf การรันคำสั่งที่ฉันต้องการจะกลับมา ~/foo/dir1/dir1.pdf ~/foo/dir2/spam/spam.pdf ~/foo/dir3/dir3.pdf ~/foo/dir3/eggs/eggs.pdf เป็นไปได้โดยใช้findหรือยูทิลิตี้คอร์อื่น ๆ ? ฉันถือว่าสิ่งนี้ทำได้โดยใช้-regexตัวเลือกfindแต่ฉันไม่แน่ใจว่าจะเขียนรูปแบบที่ถูกต้องได้อย่างไร
9 find 

3
จะค้นหาไฟล์ตามประเภทไฟล์ได้อย่างไร?
ฉันรู้ว่าฉันสามารถค้นหาไฟล์โดยใช้find: find . -type f -name 'sunrise'. ตัวอย่างผลลัพธ์: ./sunrise ./events/sunrise ./astronomy/sunrise ./schedule/sunrise file sunriseฉันยังรู้ว่าฉันสามารถตรวจสอบประเภทของไฟล์ของไฟล์: ตัวอย่างผลลัพธ์: sunrise: PEM RSA private key แต่ฉันจะค้นหาไฟล์ตามประเภทไฟล์ได้อย่างไร ตัวอย่างเช่นmy-find . -type f -name 'sunrise' -filetype=bash-script: ./astronomy/sunrise ./schedule/sunrise

2
การค้นหาไฟล์ที่เก่ากว่า x วันในระบบที่มีช่องว่างไม่ว่าง
ฉันต้องการค้นหาและลบไฟล์ที่เก่ากว่า 1 สัปดาห์ในหน่วยการพัฒนา มีสาธารณูปโภคจำนวน จำกัด ในหน่วยนี้ -mtime findเพรดิเคตของไม่พร้อมใช้งาน ฉันจะตรวจสอบไฟล์ทั้งหมดที่เก่ากว่า x วันได้อย่างไร?
9 linux  files  find  date  busybox 

3
ค้นหา PDF ทั้งหมดที่มีอักขระอย่างน้อยสามตัวในชื่อ
ฉันต้องการค้นหาไฟล์ PDF ที่มีชื่อ (ไม่รวมส่วนขยาย) มากกว่าสามไฟล์ $ find ~ -iregex ".{3,}/.pdf" ไม่มีอะไรคืน แต่ $ find ~ -iregex ".+/.pdf" โรงงาน ฉันจะเปิดใช้งาน{3,}ชุดตัวเลือกได้อย่างไร
9 find 

1
ทำไมคำสั่ง find ไม่พบไดเร็กทอรีเมื่อรันจาก ~
มีไดเรกทอรีที่อยู่ภายใต้ชื่อ /tmptest_copy $ ls /tmp/test_copy/ a.sh b.sh $ cd /tmp /tmp$ find . -name test_copy ./test_copy แต่ถ้าฉันเรียกใช้findคำสั่งต่อไปนี้จะไม่ส่งคืนสิ่งใด ~/scripts$ find /tmp -name test_copy ~/scripts$ เหตุใดจึงไม่findพบไดเรกทอรีในกรณีสุดท้าย
9 linux  find 

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