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

คำสั่ง find ในระบบ Windows ใช้เพื่อกรองบรรทัดข้อความอินพุตและส่งคืนคำสั่งที่ตรงกับตัวกรอง คำสั่ง find ในระบบ * nix ใช้เพื่อค้นหาไฟล์หรือโฟลเดอร์ที่ตรงกับเกณฑ์ที่กำหนด

1
ใช้ find -mmin เพื่อค้นหาไฟล์ที่มีเวลาแก้ไขในอนาคต
ฉันสามารถใช้ find . -mmin -5 เพื่อค้นหาไฟล์ที่เปลี่ยนแปลงใน 5 นาทีที่ผ่านมา อย่างไรก็ตามหากฉันพยายามค้นหาไฟล์ที่มีเวลาในการแก้ไขในอนาคตโดยให้จำนวนลบfindปฏิเสธที่จะทำ: find . -mmin --1 มีวิธีให้เวลาแก้ไขในอนาคตกับ Linux มาตรฐานfindหรือไม่
9 linux  find  time 


1
ไฟล์ DOS Batch เพื่อค้นหาไฟล์“ ใหม่” ตามวันที่
พีซีของฉันเข้าสู่วงวน BSOD ไม่ จำกัด - แต่ฉันสามารถเข้าถึงพรอมต์คำสั่งเซฟโหมดได้ ฉันกำลังพยายามทำความเข้าใจกับ "สิ่งที่เปลี่ยนแปลง" ซึ่งอาจเป็นสาเหตุให้เกิดสิ่งนี้ เช่น. ฉันอาจได้รับไวรัสหรือมีการอัปเดตแอป ฉันต้องการจะดูว่าไฟล์ใดที่ถูกสร้าง / แก้ไขในไม่กี่วัน / สัปดาห์หรืออย่างน้อย * .exe, * .dll, * .com, * .bat เป็นต้น ฉันคิดว่าฉันโอเคกับ Batch-fu ของฉัน แต่ฉันนิ่งงันกับวิธีการเขียนแบตช์ไฟล์ / คำสั่งที่จะแสดงรายการไฟล์ให้ฉัน REM This will find the files, but the results are all muddled REM all EXE files, reverse sort by …

4
การค้นหาไดเรกทอรีย่อยภายในไดเรกทอรีทั้งหมดด้วยชื่อเดียวกัน
ฉันต้องการเรียกใช้คำสั่งเพื่อ: ค้นหาไดเรกทอรีทั้งหมดที่ชื่อ " inc" ในโฟลเดอร์ " X" รายการไดเรกทอรีย่อยทั้งหมดภายใต้ "" แต่ละX/.../inc/รายการ เปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ชื่อ " list" ฉันลองชุดคำสั่งด้านล่างหลายแบบโดยไม่ประสบความสำเร็จ: $ find X/ -name "inc" -print | xargs find {} -type d > list find: path must precede expression ฉันจะทำสิ่งนี้ได้อย่างไร

3
มีอะไรเร็วกว่า `หา | wc -l` เพื่อนับไฟล์ในไดเรกทอรี?
ไม่ใช่เรื่องแปลกที่ฉันต้องนับจำนวนไฟล์ในไดเรกทอรีบางครั้งสิ่งนี้จะกลายเป็นล้าน มีวิธีที่ดีกว่าเพียงแค่แจงนับและนับมันด้วยfind . | wc -lหรือไม่? มีการเรียกระบบไฟล์บางชนิดที่คุณสามารถทำได้บน ext3 / 4 ที่มี I / O น้อยลงหรือไม่?

4
การลบไฟล์ที่เก่ากว่าอย่างสง่างามกว่า 30 วัน
ฉันมีโฟลเดอร์แคชอย่างน้อย 15,000 ไฟล์ ฉันลองสิ่งนี้: find cache* -mtime +30 -exec rm {} \; แต่นี่ทำให้โหลดเซิร์ฟเวอร์ของฉันบินไปบนท้องฟ้า! มีวิธีใดที่เร็วกว่าหรือดีกว่า หรือฉันสามารถจำกัด ความเร็วหรือทำซ้ำคำสั่งนี้ได้หรือไม่?

5
ค้นหาไฟล์ทั้งหมดที่เก่ากว่าหนึ่งนาที
ฉันfindจะใช้เพื่อเลือกไฟล์ที่เขียนและไม่ได้แก้ไขในนาทีสุดท้ายได้อย่างไร ฉันรู้ว่าฉันสามารถทำสิ่งอื่น ๆ รอบ ๆ ค้นหาไฟล์ที่แก้ไขใน 60 วินาทีสุดท้ายด้วย-mtime -60sแต่ฉันต้องการไฟล์ที่ไม่ได้รับการแก้ไขใน 60 วินาทีที่ผ่านมา ฉันใช้ Linux และได้รับข้อผิดพลาดนี้หากฉันใช้วินาที: find ??/ -mtime +60s -name blah.tsv find: invalid argument `+60s' to `-mtime'
8 linux  find 

4
ฉันจะรันคำสั่ง 'find` นี้ได้อย่างไร แต่เฉพาะในไฟล์ที่ไม่ใช่ไบนารี
ฉันต้องการลบช่องว่างต่อท้ายออกจากไฟล์ทั้งหมดในลำดับชั้นไดเรกทอรีซ้ำ ฉันใช้สิ่งนี้: find * -type f -exec sed 's/[ \t]*$//' -i {} \; วิธีนี้ใช้ได้ผล แต่จะลบ "ช่องว่าง" ต่อท้ายออกจากไฟล์ไบนารีที่พบซึ่งไม่พึงประสงค์ ฉันจะบอกfindให้หลีกเลี่ยงการรันคำสั่งนี้ในไฟล์ไบนารีได้อย่างไร?
8 unix  find 

5
ลบโฟลเดอร์เปล่าทั้งหมดแม้จะมีโฟลเดอร์. svn อยู่ด้วย
ฉันพยายามลบโฟลเดอร์เปล่าทั้งหมดในไดเรกทอรี แต่find . -type f -emptyไม่พบอะไรเลยเพราะทุกโฟลเดอร์ที่มีซ่อน.svnโฟลเดอร์ ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

4
ฉันจะค้นหาเส้นทางโดยให้เพียงส่วนหนึ่งของเส้นทางได้อย่างไร
สมมติว่าผมต้องการที่จะหาเส้นทางนี้และข้อมูลเดียวที่ฉันมีคือ/<some_where_in_root>/find/this/path /find/this/pathอะไรจะเป็นวิธีที่ดีที่สุดในการค้นหาไดเรกทอรีเต็ม? โดยทั่วไปฉันมีโปรแกรมที่สร้างไดเรกทอรีและหลังจากสร้างไดเรกทอรีแล้วฉันต้องการดูว่ามีเส้นทางอยู่ในไดเรกทอรีที่สร้างขึ้นหรือไม่ จนถึงตอนนี้ฉันได้ลองแล้วfind . -type d -name "/find/this/path"แต่นี่เป็นการตีความที่ชัดเจน/find/this/pathว่าเป็นสตริง มีวิธีการใช้การค้นหาในสถานการณ์นี้หรือไม่? มันจะเป็นการดีที่สุดที่จะแยกเส้นทางที่ฉันมีและรับpathส่วนและทำการค้นหาในสายนี้หรือไม่?
6 linux  shell  find  sh 

4
วิธีรับบรรทัดแรกของเอาต์พุตจากบรรทัดคำสั่ง?
ฉันรันคำสั่ง find ที่ส่งคืนผลลัพธ์หลายรายการ แต่ฉันต้องการผลลัพธ์แรกเท่านั้น googling นิดหน่อยทำให้ฉันไปที่คำสั่ง "read" แต่ฉันไม่สามารถหามันได้และหน้า man ไม่ได้ช่วยอะไรมาก
5 macos  shell  find 

2
ค้นหาความแตกต่างด้วย mtime - และ +
อะไรคือความแตกต่างระหว่างmtime's -และ+สวิตช์' เนื่องจากทั้งคู่ไม่ได้นำผลลัพธ์ที่ฉันต้องการกลับมา ฉันต้องการลบไฟล์ทั้งหมดที่เก่ากว่า 5 วัน: find /mnt/sdb1/tmp/ -type f -mtime +5 -exec ls {} \; find /mnt/sdb1/tmp/ -type f -mtime -5 -exec ls {} \; ฉันเปลี่ยนผลลัพธ์เป็นlsเพื่อเปรียบเทียบผลลัพธ์
5 linux  bash  find 

1
Batch File ที่คัดลอก 2 บรรทัดแรกของไฟล์ข้อความไปยังไฟล์ข้อความอื่น
ฉันมีไฟล์ข้อความ A.txt Pinging [xx.xx.xx.xx] with 32 bytes of data: Request timed out. Ping statistics for xx.xx.xx.xx: Packets: Sent = 1, Received = 0, Lost = 1 (100% loss) ฉันต้องการคัดลอก 2 บรรทัดแรกของไฟล์นี้ไปยังไฟล์ B.txt อื่นเช่น Pinging [xx.xx.xx.xx] with 32 bytes of data: Request timed out. ฉันรู้ว่าฉันสามารถใช้ FOR / F เพื่อวนซ้ำบรรทัดต่างๆในไฟล์ได้ ฉันรู้วิธีที่จะข้ามสองบรรทัดแรก แต่ไม่เพียงอ่านพวกเขาเท่านั้น …

2
ฉันจะเก็บเน้นการจับคู่ของ grep ได้อย่างไรเมื่อทำการ piping ไปที่ grep
หากฉันเรียกใช้grep foo bar.txtgrep จะเน้นการ "foo" ในbar.txtแต่ละครั้ง แต่บางครั้งฉันต้องการใช้findเพื่อตรวจสอบว่าไฟล์ grep ค้นหา ดังนั้นฉันจะทำสิ่งนี้: find . -iname "*.abc" | xargs grep foo หรือสิ่งนี้: find . -iname "*.abc" -exec grep foo {} \; ในทั้งสองกรณี grep ค้นหาเหตุการณ์ "foo" ในไฟล์ที่ระบุอย่างถูกต้อง แต่เอาต์พุตไม่มีการเน้นสีใด ๆ ฉันจะใช้findเพื่อเลือกไฟล์สำหรับ grep เพื่อค้นหาโดยไม่ไฮไลต์ได้อย่างไร ฉันใช้ Gnome Terminal 3.4.1.1 บน Ubuntu 12.04 โดยมี bash เป็น shell ของฉัน

3
ฉันจะใช้ find เพื่อคัดลอกไฟล์ที่พบทั้งหมดไปยังชื่อใหม่ในไดเรกทอรีเดียวกันได้อย่างไร
ฉันมีคำสั่งง่ายๆที่เกือบจะเป็นสิ่งที่ฉันต้องการ ต่อไปนี้จะค้นหาไฟล์ทั้งหมดที่มีคำต่อท้ายเป็น '_compressed.swf' และคัดลอกแต่ละไฟล์ลงในไดเรกทอรีเดียวกันโดยใช้ '.bak2' ต่อท้าย: ค้นหา '../content' -name '* _compressed.swf' -print0 | xargs -0 -I {} cp {} {} .bak2 ผลลัพธ์ ใน: /content/somefile_compressed.swf Out: /content/somefile_compressed.swf.bak2 อย่างไรก็ตามฉันต้องแทนที่ '_compressed.swf' ด้วย '_content.swf' ฉันต้องการใช้การค้นหาแทนที่การตั้งค่าสถานะแบบเรียกซ้ำบน cp เพื่อความสอดคล้อง วัตถุประสงค์ ใน: /content/somefile_compressed.swf Out: /content/somefile_content.swf
4 linux  bash  find  cp  xargs 

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