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

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

2
คัดลอกไฟล์ทั้งหมดภายในไดเรกทอรีย่อยและเปลี่ยนชื่อแทนการเขียนทับ
ฉันมีรูปภาพจำนวนหนึ่งในไดเรกทอรีย่อยของไดเรกทอรีอื่นซึ่งฉันต้องการคัดลอกไปยังไดเรกทอรีเดียวเพื่อให้ภาพทั้งหมดอยู่ในที่เดียว หลังจากการค้นหาเล็กน้อยฉันพบแล้วแก้ไขบางสิ่งเพื่อสร้างคำสั่งนี้: find . -name "z*.jpg" -exec cp '{}' ~/Extracted/ \; ดูเหมือนว่าจะใช้ได้ แต่ฉันพบว่าภาพที่มีชื่อเดียวกันจะถูกเขียนทับดังนั้นฉันจึงทำสิ่งนี้: find . -name "z*.jpg" -exec cp -n '{}' ~/Extracted/ \; แต่ตอนนี้ภาพที่มีชื่อเดียวกันจะถูกละเว้น ฉันสามารถทำเช่นนี้ได้ดังนั้นทุกภาพจะถูกคัดลอกและภาพที่มีชื่อเดียวกันจะถูกเปลี่ยนชื่อหรือไม่?
4 linux  find  cp 

2
ใช้ไพพ์ภายในคำสั่ง find exec
ฉันพยายามหาขวดที่มีคลาสฉันเขียนด้านล่างซึ่งดูเหมือนจะไม่ทำงาน ความคิดใด ๆ find -type f -name "*.jar" -exec jar -tvf "{}" \| grep MyClass \; -ls
3 find  pipe  jar 

2
สัญลักษณ์แทนไม่ทำงานในคำสั่ง cp เมื่อใช้ exec
ฉันต้องการคัดลอกไฟล์ทั้งหมดในไดเรกทอรีทั้งหมดไปยังไดเรกทอรีหลัก แต่ฉันได้รับข้อผิดพลาด ./img/* is not a directory ตัวอย่างเช่น. นี่คือคำสั่งที่ฉันใช้ มีวิธีที่ดีกว่าในการทำเช่นนี้? find . -type d -regex './[a-z]*' -exec cp -v {}/* .. \;
3 command-line  unix  find  cp 

1
ลบไฟล์บันทึกเก่าใน AIX
ฉันพยายามเขียนสคริปต์เพื่อลบไฟล์บันทึกเก่า \var\log\applog\nmon บนระบบ AIX ของฉัน เรามักจะได้รับการแจ้งเตือนว่าระบบไฟล์เกือบเต็มแล้วและในขณะนี้ลบไฟล์เก่าด้วยมือ โดยพื้นฐานแล้วสิ่งที่ฉันกำลังมองหาคือสคริปต์ที่ฉันสามารถกำหนดเวลาในการ cron งาน สคริปต์นี้ควรเก็บบันทึกเป็นเวลาสองเดือนและลบที่เหลือ มีไฟล์สองไฟล์ที่ฉันไม่ต้องการลบ: .profile และ .sh_history. ฉันลองคำสั่งนี้: find nmon -mtime +60 -type f -not -name ".profile" -not -name ".sh_history" –delete มันใช้งานได้ดี แต่มันก็ลบทั้งสองไฟล์ที่ฉันพูดถึงไปก่อนหน้านี้ ฉันไม่แน่ใจว่าจะดำเนินการกับสคริปต์อย่างไรเพื่อให้ฉันสามารถลบไฟล์บันทึกเก่า แต่ไม่ใช่ไฟล์ทั้งสอง ฉันลองคำสั่งด้านบน แต่มันทำให้ฉันมีข้อผิดพลาดนี้: find: 0652-017 -not is not a valid option.
3 unix  shell-script  find  aix  ksh 

1
การลบไดเร็กทอรีที่มีไฟล์โดยใช้ find
ฉันกำลังค้นหารายการไดเรกทอรีสำหรับไฟล์บางไฟล์และฉันต้องการลบไดเรกทอรีที่ไฟล์นั้นมีอยู่ นี่คือสิ่งที่ฉันพยายาม: find /converter/storage/unmatched/ -size -4b -name '*.mp3' -execdir mv -b `dirname {}` /converter/storage/smallfiles/ \; mv: cannot move `.' to `/converter/storage/smallfiles/.' ฉันพยายามที่จะย้ายมันก่อนเพื่อพิสูจน์ตัวเองว่าสามารถทำได้โดยไม่ทิ้งไฟล์ที่ไม่ตั้งใจ ฉันจะย้ายหรือลบไดเรกทอรีที่มีได้อย่างไร
3 find  rm  mv 

3
เหตุใดจึงไม่ใช้การวนซ้ำ
นี่เป็นบน Ubuntu 12.04 ฉันพยายามหาวิธีรับ ffmpeg เพื่อทำการแปลงแบบ FLAC เป็น MP3 แบบเรียกซ้ำ ถ้าฉันcdเป็นไดเรกทอรีและใช้ for f in *.flac; do ffmpeg -i "$f" -c:a libmp3lame -q:a 2 "${f/%flac/mp3}"; done ที่ใช้งานได้ดีอย่างสมบูรณ์แบบ อย่างไรก็ตามเมื่อฉันลองสิ่งนี้มันไม่ทำงาน: for f in "$(find . -type f -name *.flac)"; do ffmpeg -i "$f" -c:a libmp3lame -q:a 2 "${f/%flac/mp3}"; done มันไม่ได้ทำให้เกิดข้อผิดพลาดที่เป็นประโยชน์ (แต่นี่คือผลลัพธ์ต่อไปไม่จำเป็นต้องบ่น): evilsoup@enchantment:~/Music/Jean Sibelius$ …

1
จะกำจัดข้อผิดพลาดเมื่อรันคำสั่ง find ใน Linux ได้อย่างไร
ฉันใช้คำสั่งต่อไปนี้เพื่อแสดงรายการไฟล์ขนาดใหญ่ 20 ไฟล์ในไดเรกทอรี แต่พร้อมกับรายชื่อไฟล์ก็ยังแสดงให้เห็นถึงข้อผิดพลาดเช่นอนุญาตปฏิเสธ ฉันลองเพิ่ม2> /dev/nullแต่ดูเหมือนจะไม่ชอบ นี่คือคำสั่งที่ฉันใช้ find . -type f -printf "%s %p\n" | sort -nr | head -n 20 ฉันขอทราบวิธีหลีกเลี่ยงข้อความแสดงข้อผิดพลาดทั้งหมดและแสดงเฉพาะรายการไฟล์ได้หรือไม่

1
Bash ย้ายและเปลี่ยนชื่อโดยแยกวิเคราะห์ผลลัพธ์ของ find
ฉันมีไดเรกทอรีที่ซ้อนกันของไฟล์ PDF และฉันต้องการแยกออกเป็นไดเรกทอรีระดับที่สูงขึ้นโดยเปลี่ยนชื่อดังนี้: ไฟล์ของฉันเป็นสิ่งที่ชอบ: ./path1/pathA/fileI.pdf ./path1/pathB/fileII.pdf ฉันต้องการบรรลุ: ./path1_pathA_fileI.pdf ./path1_pathB_fileII.pdf ฉันรู้ว่าฉันสามารถสร้างรายการไฟล์โดยทำ find . -type f -name "*.pdf" และฉันสามารถจินตนาการวิธีแก้ปัญหาโดยใช้ find . -type f -name "*.pdf" | mv -t ... แต่ฉันไม่ทราบวิธีกรอกข้อมูลใน ... เพราะฉันไม่เข้าใจการแยกวิเคราะห์และการมอบหมายตัวแปรในการทุบตี หนึ่งจะแยกเส้นทางที่ '/' และรูปแบบเส้นทางใหม่และชื่อไฟล์ดังกล่าวข้างต้นได้อย่างไร ขอบคุณมากล่วงหน้า!
3 linux  command-line  bash  find  mv 

1
ค้นหาต่อไปใน vimperator?
ฉันใหม่เพื่อ vimperator ชอบส่วนใหญ่ แต่ปัญหาสำคัญสำหรับฉันคือการไม่สามารถค้นหาถัดไป / ก่อนหน้าโดยใช้ n และ N หลังจากที่ฉันทำ / search_term การกด n หรือ N เพียงเพิ่มคำค้นหาแทนที่จะไปต่อ การจับคู่. มีบางอย่างที่ฉันขาดหายไปหรือไม่? Firefox 34.0.5, vimperator 3.9, Vista 32- บิตที่นี่

1
Linux“ find -regex” ไม่จัดการการผูก
ฉันมีไฟล์ต่อไปนี้และจำเป็นต้องจับคู่กับไฟล์เหล่านั้นเช่น: ./foo.bar1.sh -match ./qux/foo.bar2.sh -match ./foo.sh -match ./baz.sh -no match ./foo.bar3 -no match ฉันเหนื่อย: หา -regex ". * foo (แถบ [0-9]) ?. sh" แต่มันจะไม่ส่งคืนอะไรเลย ฉันไม่ทราบสาเหตุที่ regex ใช้งานไม่ได้ ... ช่วยด้วย?
2 linux  find  regex 

4
จะค้นหาเนื้อหาของไฟล์ในโฟลเดอร์ได้อย่างไร?
ใน Win 7 ฉันจะค้นหาคำในเนื้อหาของไฟล์ทั้งหมดในโฟลเดอร์ที่ต้องการได้อย่างไร ใน XP นี่เป็นเรื่องง่าย สิ่งที่คุณต้องทำคือพิมพ์คำลงในกล่องข้อความ "คำหรือวลีในไฟล์" ในหน้าต่างการค้นหาและมันจะรวมเฉพาะไฟล์ที่มีคำนั้นในผลการค้นหา

2
รายการไฟล์ในไดเรกทอรีเฉพาะที่เก่ากว่า 1 วันหรือ 24 ชั่วโมง
ฉันพยายามเขียนสคริปต์สำรองอย่างง่ายใน python ที่ฉันพยายามแสดงรายการไฟล์ที่มีอายุ 24 ชั่วโมงในไดเรกทอรีเฉพาะที่ฉันจะเลือก ฉันอ่านคู่มือการค้นหาและใช้ หา - ครั้งที่ 1 & gt; log.dat เพื่อรับรายชื่อของไฟล์ใน log.dat แต่ฉันยังได้รับข้อมูลเส้นทางในรายการนั้นเช่นกัน ./hpc06MatlabCodes/2011/Apr/3dBoxModel ./hpc06MatlabCodes/2011/Apr/3dBoxModel/vfluidIrca10.dat ./hpc06MatlabCodes/2011/Apr/3dBoxModel/vLRecoveredSystem.mat มีวิธีการแยกไดเรกทอรีและได้รับรายชื่อไฟล์เท่านั้น Greetz, Umut
2 linux  shell  search  find 

1
การดัดแปลงลิงค์สัญลักษณ์สำหรับ HP unix
ฉันพยายามแก้ไขสิ่งต่อไปนี้เพื่อเปลี่ยนชื่อลิงก์สัญลักษณ์: find /home/user/public_html/qa/ -type l \ -lname '/home/user/public_html/dev/*' -printf \ 'ln -nsf $(readlink %p|sed s/dev/qa/) $(echo %p|sed s/dev/qa/)\n'\ > script.sh น่าเสียดายที่-lnameตัวเลือกนี้ใช้ไม่ได้กับ HPUX คุณรู้ไหมว่ามีสิ่งที่ฉันสามารถใช้ได้ เพียงเพื่อให้และทราบปัญหาของฉันฉันต้องการเปลี่ยนลิงก์สัญลักษณ์ทั้งหมดภายในโฟลเดอร์เฉพาะ New Symbolic link --> /base/testusr/scripts Old Symbolic link --> /base/produsr/scripts ตอนนี้โฟลเดอร์ "A" มีไฟล์ต่าง ๆ มากกว่า 100 ไฟล์ที่มีลิงค์นุ่ม ๆ ซึ่งฉันต้องเปลี่ยนในลักษณะนี้

2
การเปลี่ยนชื่อไฟล์หลายไฟล์ที่ตรงกับ UNIX ค้นหาคำสำคัญ
ฉันมีผลลัพธ์จากคำสั่ง find สำหรับค้นหาไฟล์ที่มีyyyชื่อ: ./plonetheme/xxx/yyy-logo.png ./plonetheme/xxx/profiles/default/plonetheme.yyy_various.txt ./plonetheme/xxx/skins/plonetheme_yyy_custom_images ./plonetheme/xxx/skins/plonetheme_yyy_custom_images/CONTENT.txt ./plonetheme/xxx/skins/plonetheme_yyy_custom_templates ./plonetheme/xxx/skins/plonetheme_yyy_custom_templates/CONTENT.txt ./plonetheme/xxx/skins/plonetheme_yyy_custom_templates/main_template.pt ./plonetheme/xxx/skins/plonetheme_yyy_styles ./plonetheme/xxx/skins/plonetheme_yyy_styles/base_properties.props ./plonetheme/xxx/skins/plonetheme_yyy_styles/CONTENT.txt ฉันจะเปลี่ยนชื่อไฟล์ทั้งหมดเพื่อให้สตริงyyyนั้นถูกแทนที่ด้วยได้zzzอย่างไร?

1
ฉันจะเรียกใช้คำสั่งในแต่ละไฟล์ภายในไดเรกทอรีที่ตรงกับรูปแบบได้อย่างไร
ฉันพยายามเรียกใช้คำสั่งในทุกไฟล์ภายในไดเรกทอรี (วนซ้ำ) ที่ตรงกับรูปแบบ ฉันต้องการชื่อไฟล์ของแต่ละรายการที่ตรงกับคำสั่งอย่างไรก็ตาม นี่คือสิ่งที่ฉันได้: find . -name '*.jar' นั่นให้ไฟล์ทั้งหมดที่ฉันสนใจตอนนี้ฉันต้องเรียกใช้คำสั่งต่อไปนี้ในทุกไฟล์เหล่านั้น jarsigner -keystore ***** -storepass ****** $FILENAMEHERE ฉันจะอ้างอิงแต่ละไอเท็มในเอาต์พุตของ find สำหรับคำสั่งได้อย่างไร?

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