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

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


3
นับไฟล์ในรายการไดเรกทอรี
ฉันมีไฟล์พร้อมรายการไดเรกทอรีที่ฉันอยากรู้ว่ามีกี่ไฟล์ในแต่ละไดเรกทอรี ... / images / idsuffix / userids / นี่จะให้จำนวนไฟล์และไดเรกทอรีสำหรับ 5 ไดเรกทอรีแรกแทนที่จะเป็นสำหรับแต่ละไดเรกทอรี ค้นหา ./images/00{0..5}/ | ห้องน้ำ สิ่งที่ฉันต้องการคือการนับเนื้อหาสำหรับแต่ละไดเรกทอรี ฉันพยายามส่งผ่าน xargs แต่ทำสิ่งเดียวกันและสร้างการนับสำหรับไดเรกทอรีทั้งหมด ls ./images/ > directories.lst cat directories.lst | xargs -i{} find {} | wc และนี่ไม่ได้สร้างผลลัพธ์ใด ๆ เลย cat directories.lst | xargs -I{} bash -s "find {} | wc"
2 linux  bash  find  pipe 

1
ทุบตีค้นหารายการไฟล์ที่เก็บถาวรด้วย wildcard ในขณะวนซ้ำ
ฉันมีไฟล์ข้อความสองสามพัน gzipped ในไดเรกทอรีย่อยที่แตกต่างกันและใช้ชุดย่อยของไฟล์เหล่านี้เป็นอินพุตสำหรับโครงการเมื่อไม่กี่ปีที่ผ่านมา ย้อนกลับไปฉันมีสำเนาของไฟล์ที่ฉันใช้จริงในไดเรกทอรีเดียว แต่ได้ลบไฟล์นี้แล้วเก็บเฉพาะรายการไฟล์ที่คลายซิปเหล่านี้ในโฟลเดอร์นั้น นี่เป็นความคิดเริ่มต้นของฉันLISTคือรายการไฟล์ PARENTDIRเป็นไดเร็กทอรีระดับบนซึ่งไฟล์ทั้งหมดอยู่ในไดเร็กทอรีย่อยต่างๆ แนวคิดก็คือการค้นหาจดหมายเหตุทั้งหมดในไดเรกทอรีย่อยใด ๆ ที่พวกเขาเป็นและ gunzip พวกเขาไปNEWDIR #!/usr/bin/env bash LIST="listfile.txt" PARENTDIR="/home/user/old/project" NEWDIR="/home/user/old/project/2016" while read line; do ARCHIVE="$(find $PARENTDIR -name "$line*")" gunzip --stdout $ARCHIVE >$NEWDIR/$line done <$LIST ฉันดูเหมือนจะไม่ได้รับคำสั่ง find มันทำงานได้โดยไม่ต้องใช้ตัวแปร แต่ไม่ใช่กับแม้จะไม่มีการทดแทนคำสั่งเรียกใช้บรรทัดคำสั่ง การรวมราคาและบัตรเสริมของฉันไม่ถูกต้อง แต่ฉันไม่สามารถทำให้ถูกต้องการขยายตัวที่หลากหลายไม่ได้ช่วยอะไรและฉันคิดว่าฉันติดอยู่ ...

2
ค้นหาคำสั่ง: ค้นหาไฟล์ที่ผู้ใช้หลายคนเป็นเจ้าของด้วยคำสั่งเดียว
ใน Linux มีวิธีการค้นหาไฟล์ที่ผู้ใช้หลายคน (หรือกลุ่มของผู้ใช้) ด้วยคำสั่ง "find" หรือไม่? อะไรแบบนี้? find . -user john, akido

2
ฉันจะค้นหาไฟล์ที่ระบุชื่อเฉพาะในไดเรกทอรีที่ระบุชื่อซึ่งสามารถอยู่ที่ใดก็ได้ในระบบไฟล์ได้อย่างไร
ฉันพยายามค้นหาไฟล์ภายในไดเรกทอรีที่รู้ทั้งชื่อไฟล์และชื่อของไดเรกทอรี ตัวอย่างเช่นฉันต้องการค้นหา " ...don't know this part of file path stem).../dirname/filename.extension" ฉันมีความรู้สึกฉันกำลังมองหาสิ่งนี้: find / -type d -name "dirname" | xargs find * -type f -name "filename.extension" แต่ฉันไม่สามารถตีคอมโบที่ถูกต้องได้ วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร?
2 find  xargs 

1
Unix find -size -1G ละเว้นไฟล์ที่ส่งคืนโดย find -size -900M [ซ้ำ]
คำถามนี้มีคำตอบอยู่ที่นี่แล้ว: find: ขีด จำกัด ขนาดไฟล์เท่ากัน แต่หน่วยต่างกันจะให้ผลลัพธ์ต่างกัน 1 คำตอบ ฉันต้องการไฟล์ tar-gzip ด้านล่างขนาดที่แน่นอนในไดเรกทอรี ฉันลองคำสั่งที่แนะนำจาก โพสต์นี้ และใช้งานได้ แต่เมื่อฉันเปลี่ยนอาร์กิวเมนต์สำหรับ find -size ไปยัง -1Gมันจะข้ามบางไฟล์แม้ว่าขนาดไฟล์จะต่ำกว่า 1GB เมื่อฉันให้ -100M และแม้กระทั่ง -900M ไฟล์เหล่านั้นไม่ได้ถูกละเว้น ข้อมูลบางอย่างเกี่ยวกับไฟล์: ไฟล์ในไดเรกทอรีประกอบด้วยไฟล์ขนาดกลางหลายไฟล์ (1-200 MB) และไฟล์เล็ก ๆ นับพัน (& lt; 1 MB ต่อไฟล์) ไฟล์ขนาดกลางเป็นไฟล์เรียกทำงาน (นามสกุล. exe) ไฟล์เล็ก ๆ เป็นเพียงไฟล์สุ่มที่ไม่มีนามสกุลหรือ. นามสกุล เมื่อฉันให้ -900Mผลที่ตามมาคือไฟล์ขนาดจิ๋วและขนาดกลางที่ถูกส่งคืน อย่างไรก็ตามเมื่อฉันให้ -1Gไฟล์ขนาดกลางทั้งหมดและไฟล์ขนาดเล็กจำนวนมากหายไปจากผลลัพธ์ คำถาม: มีอะไรที่ฉันคิดถึงที่นี่เกี่ยวกับการใช้งานของ …
1 linux  unix  find 

1
ย้ายไฟล์หลาย ๆ ไฟล์ซ้อนกันจนกว่าพวกเขาจะมีเพียงไดเรกทอรีเดียว
ฉันมีหลายไฟล์ในหลายไดเรกทอรีบางฝังอยู่ภายใต้ไดเรกทอรีย่อย ฉันต้องการที่จะสามารถย้ายไฟล์ทั้งหมดจนกว่าพวกเขาจะมีเพียง 1 ไดเรกทอรีลึก ตัวอย่างเช่น: /home/folder/subfolder/file1.txt /home/folder2/file2.txt /home/folder3/subfolder/subfolder/subfolder/file3.txt กลายเป็น: /home/folder/file1.txt /home/folder2/file2.txt /home/folder3/file3.txt ฉันพบว่าฉันสามารถใช้ find ./*/ -type f เพื่อค้นหาไฟล์ทั้งหมด แต่ฉันไม่แน่ใจว่าจะย้ายพวกเขาอย่างไรเพื่อให้พวกเขามีเพียงไดเรกทอรีเดียว
1 linux  bash  find  mv 

2
ทำไมถึงหา -maxdepth 1 พร้อมกับตัวเลือก -a / flag ไม่ส่งคืนผลลัพธ์ใด ๆ บน Linux?
ฉันต้องการค้นหาไฟล์ png AND jpg ทั้งหมดและใช้คำสั่งต่อไปนี้และจะไม่มีการส่งคืนผลลัพธ์อย่างไรก็ตามหากฉันแทนที่ -a กับ -o มันแสดงรายการไฟล์ให้ฉัน ทำไมถึงเป็นอย่างนั้น? `find . -maxdepth 1 \( -iname \*\.png -a -iname \*\.jpg \)
1 linux  find 

1
มีส่วนขยายของเบราว์เซอร์สำหรับเบราว์เซอร์ใด ๆ ที่อนุญาตให้สอง "การค้นพบ" ในหน้าเว็บที่มีสีไฮไลต์ที่แตกต่างกันหรือไม่?
ด้วยแอพส่วนใหญ่รวมถึงเบราว์เซอร์จะมีฟังก์ชั่น "ค้นหา" สำหรับค้นหาข้อความในเอกสารปัจจุบัน อินสแตนซ์ทั้งหมดของข้อความที่ตรงกันจะถูกเน้นเพื่อให้ง่ายต่อการมองเห็น แต่บางครั้งคุณต้องการค้นหาข้อความสองส่วนที่แตกต่างกัน นี่จะค่อนข้างง่ายสำหรับผู้ที่รู้ว่านิพจน์ทั่วไปในแอปที่มีการค้นหาสามารถจัดการการแสดงออกปกติ ... แต่ฟังก์ชั่น "ค้นหา" ของเบราว์เซอร์ไม่สนับสนุน regex และมันยากสำหรับผู้ที่ไม่ได้ใช้ ดังนั้นฉันสงสัยว่ามีส่วนขยายเบราว์เซอร์สำหรับ Firefox, Chrome หรือเบราว์เซอร์อื่นใดที่จะช่วยให้คุณ "ค้นหา" หนึ่งคำและเน้นสีเหลืองพูดและ "ค้นหา" คำที่สอง พูดสีเขียวสดใส (ฉันค้นหาแล้ว แต่ยังหาไม่เจอ)

1
ฉันจะเขียนหา expression ได้อย่างไร (atime = ctime) (access time = change time)
ฉันต้องการหาชุดของไฟล์ที่จะลบที่ไม่ได้รับการเข้าถึงนับตั้งแต่ inode เปลี่ยน ไฟล์ที่กิจกรรมล่าสุดเกิดขึ้นเมื่อพวกเขาถูกย้ายไปยังไดเรกทอรีที่พวกเขาอยู่ในปัจจุบัน ที่นี่ฉันพยายามที่จะผ่านแต่ละไฟล์เป็นไฟล์อ้างอิงสำหรับการค้นหาทดสอบ man find ... -newerXY reference Compares the timestamp of the current file with reference. ... นี่คือสิ่งที่ฉันได้ลองมาแล้ว แต่มันไม่ทำงาน find . -type f | xargs -I{} find -newerac {} -printf "%p\tinode: %i\naccess: \t%a\nchange: \t%c\n"
1 linux  bash  find  timestamp 


0
ค้นหา vs Findstr ผลลัพธ์
ต่อ คำตอบนี้ ฉันพยายามใช้ findstr เพื่อค้นหาสตริง (ชื่อ) ภายในไฟล์บันทึก HL7 บางไฟล์ในไดเรกทอรี Findstr ได้รับ 0 ผลลัพธ์ แต่ค้นหาคืนมากมาย ฉันเล่นไปกับไวยากรณ์ของคำสั่ง findstr ของฉัน แต่ไม่สามารถเอาคืนมาได้ หมายเหตุเนื่องจากไฟล์เหล่านี้เป็นไฟล์ HL7 ชื่อจะถูกล้อมรอบด้วยสัญลักษณ์ (|, ^, ฯลฯ ): D:\logs>findstr /l /m /c:"Test" *.* D:\logs> ฉันถือว่าการขาดผลลัพธ์หมายถึงผลลัพธ์ 0 รายการ ในขณะเดียวกัน: D:\logs>find /c "Test" *.* ---------- LOG1.LOG: 0 ---------- LOG2.LOG: 4 ---------- LOG3.LOG: 0 ---------- LOG4.LOG: …

1
IE 8“ ค้นหาในหน้านี้” คุณสมบัติช้ามาก
ฉันพยายามหาวิธีแก้ปัญหาสำหรับเรื่องนี้ แต่การค้นหาส่วนใหญ่ของฉันจบลงที่คนที่ไม่สามารถใช้คุณสมบัติค้นหาบนหน้านี้เลยใน IE8 มันปรากฏขึ้นสำหรับฉัน แต่ด้วยเหตุผลบางอย่างใช้เวลาตลอดไปในการค้นหาสิ่งต่าง ๆ บนหน้าข้อความหนักมักทำให้ IE ไม่สามารถใช้งานได้อย่างสมบูรณ์เป็นเวลาหลายนาที ฉันคิดว่าฉันเป็นคนเดียว แต่คนอื่น ๆ ในสำนักงานของฉันได้สังเกตเห็นเช่นกัน มีใครรู้บ้างเกี่ยวกับการทำงานหรือไม่? แก้ไข: ฉันไม่รู้สึกโง่หรอก ในที่สุดฉันก็หาคำตอบสำหรับสิ่งนี้ สำหรับเว็บไซต์ บริษัท ของเรา (และฉันมั่นใจว่าคนอื่น ๆ ที่หนักด้วยฟิลเตอร์หนัก ๆ ) คุณต้องทำงานด้วยมุมมองที่เข้ากันได้เสมอเพื่อที่จะไม่ล่าช้า

2
วิธีลบโฟลเดอร์ที่มีขนาดใหญ่อย่างไม่น่าเชื่อใน Linux
เรามีโฟลเดอร์แคชซึ่งมีขนาดใหญ่พอที่จะทำลายเซิร์ฟเวอร์โดยไม่ได้ตั้งใจ เรามี RAM 8 GB บนเซิร์ฟเวอร์และเมื่อฉันใช้งานง่าย rm คำสั่งเพื่อลบไฟล์ทั้งหมดที่อยู่ในนั้นใช้ RAM ทั้งหมดและยังคงไม่ลบหลังจาก 5 ชั่วโมง ดังนั้นเราจึงพยายามใช้ find แต่มันก็ล้มเหลวเช่นกันหลังจากผ่านไป 12 ชั่วโมง ขณะนี้จาก 24 ชั่วโมงล่าสุด find กับ perl คำสั่งกำลังทำงานและโฟลเดอร์ยังไม่ถูกลบอันที่จริงไม่ใช่ไฟล์เดียวที่ถูกลบ เมื่อเรา ls โฟลเดอร์หลักจะแสดงขนาดโฟลเดอร์โดยรอบ 1GBฉันแค่สงสัยว่ามีกี่ล้านไฟล์มี ดังนั้นคำถามของฉันมีวิธีใดบ้างที่เราสามารถลบไฟล์โดยไม่แสดงรายการดังนั้นเพียงแค่ลบโฟลเดอร์หรือไฟล์ภายในโดยไม่ทำรายการ (aka ไม่โทร getdir() เช่นการเรียกระบบ) ฉันกำลังพิจารณาที่จะฟอร์แมตเซิร์ฟเวอร์เพื่อกำจัดมันในตอนนี้ แก้ไข: ฉันได้ใช้ find กับ -delete และด้วย -exec rm -f {} EDIT2: ขึ้นอยู่กับ บทความนี้ เรากำลังเรียกใช้คำสั่ง perl ในขณะนี้ …

1
ต่อท้ายบรรทัดใหม่ไปยังหลายไฟล์
ฉันพยายามต่อท้ายบรรทัดใหม่ไปยังหลายไฟล์ด้วยคำสั่งต่อไปนี้: find -name *.ovpn -exec sh echo "line to append" >> {} \; ก่อนที่จะทำสิ่งนี้ฉันได้รับคำสั่งต่าง ๆ เพื่อให้แน่ใจว่ามันจะเป็นไปตามที่ฉันคาดไว้: find -name *.ovpn -exec sh echo "hello" \; แต่ทั้งหมดนี้จะพิมพ์ออกมา "sh: 0: ไม่สามารถเปิดเสียงสะท้อน" สำหรับทุกไฟล์ที่พบ
1 command-line  unix  find  sh 

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