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

ยูทิลิตี commandline เพื่อค้นหาไฟล์และไดเรกทอรี

2
อาร์กิวเมนต์ที่หายไปของ -exec คืออะไร
ฉันใช้คำสั่งต่อไปนี้เพื่อล้างไดเรกทอรีของไฟล์และไดเรกทอรีที่มีอายุมากกว่า 30 วันและย้ายไปยังไดเรกทอรีเก็บถาวรซึ่งฉันสามารถลบได้หลังจากสองสามสัปดาห์หากไม่มีใครขอไฟล์คืน ไดเรกทอรีเป้าหมายมีไดเรกทอรีย่อยตามชื่อผู้ใช้ดังนั้นไดเรกทอรีจะเก็บถาวร นี่คือคำสั่งที่ฉันใช้: find /path/to/directory/username/ -mtime +30 -exec mv "{}" /path/to/archive/username/ \; ผมแนะนำรุ่นล่าสุดนี้จะตอบคำถามเกี่ยวกับการขอให้อูบุนตูผู้ใช้อื่นแก้ไขรหัสเพื่อเปลี่ยนจุดสิ้นสุดของบรรทัด\;สำหรับ+เป็นมันเร็วขึ้น (และอื่น ๆ ถูกต้องหรือไม่) ดูที่นี่ อย่างไรก็ตามการใช้ +วิธีนี้ใช้ได้ถ้า-execคำสั่งนั้นls -lhไม่ใช่ในคำสั่งจริงที่ฉันใช้ ถ้าฉันลองด้วย+ฉันได้รับข้อความแสดงข้อผิดพลาด: find: missing argument to '-exec' ฉันไม่เข้าใจว่าทำไมมันทำงานแบบนี้หรือคำสั่งที่ถูกต้องจะเป็นอย่างไร โปรดอย่าเพิ่งโพสต์การแก้ไขคำสั่งฉันต้องการเข้าใจมากกว่าเพียงแค่ทำตามคำแนะนำอย่างสุ่มสี่สุ่มห้า

1
ฉันจะใช้คำสั่ง find ได้อย่างมีประสิทธิภาพมากขึ้นได้อย่างไร?
ฉันอยากรู้ว่าวิธีที่ดีที่สุดในการใช้คำสั่ง find อย่างมีประสิทธิภาพคืออะไร โดยทั่วไปฉันใช้find [filename] [dir]ซึ่งทำให้ฉันมีรายชื่อไฟล์จำนวนมากไม่มีวิธีใดที่เกี่ยวข้องกับการค้นหาของฉัน ฉันเพียงต้องการค้นหาไฟล์หนึ่งไฟล์ในไดเรกทอรีหนึ่ง ๆ คำสั่งสำหรับสิ่งนั้นคืออะไร?

1
เกิดอะไรขึ้นกับคำสั่ง 'ค้นหา' นี้
ฉันกำลังดำเนินการคำสั่งต่อไปนี้ (เพื่อค้นหาไฟล์ทั้งหมดที่มี.tsนามสกุลและลบพวกเขา): find . -type f -name "*.ts" –delete ข้อผิดพลาดปรากฏขึ้น: find: paths must precede expression: `–delete' ฉันทำอะไรผิด

7
ฉันจะนับไฟล์ที่มีนามสกุลเฉพาะและไดเรกทอรีที่อยู่ในนั้นได้อย่างไร
ฉันต้องการทราบจำนวนไฟล์ปกติที่มีส่วนขยาย.cในโครงสร้างไดเรกทอรีขนาดใหญ่ที่ซับซ้อนและจำนวนไดเรกทอรีไฟล์เหล่านี้จะกระจายไปทั่ว ผลลัพธ์ที่ฉันต้องการเป็นเพียงตัวเลขสองตัวนั้น ฉันเคยเห็นคำถามนี้เกี่ยวกับวิธีรับจำนวนไฟล์ แต่ฉันจำเป็นต้องทราบจำนวนไดเรกทอรีที่ไฟล์อยู่ด้วย ชื่อไฟล์ของฉัน (รวมถึงไดเรกทอรี) อาจมีอักขระใด ๆ พวกเขาอาจเริ่มต้นด้วย.หรือ-และมีช่องว่างหรือขึ้นบรรทัดใหม่ ฉันอาจมี symlink ที่ชื่อลงท้ายด้วย.cและ symlink ไปยังไดเรกทอรี ฉันไม่ต้องการให้มีการติดตามหรือนับจำนวน symlink หรืออย่างน้อยฉันก็ต้องการทราบว่าพวกเขาจะถูกนับเมื่อใดและเมื่อใด โครงสร้างไดเรกทอรีมีหลายระดับและไดเรกทอรีระดับบนสุด (ไดเรกทอรีทำงาน) มี.cไฟล์อย่างน้อยหนึ่งไฟล์ ฉันรีบเขียนคำสั่งบางอย่างในเชลล์ (Bash) เพื่อนับมันด้วยตัวเอง แต่ฉันไม่คิดว่าผลลัพธ์จะแม่นยำ ... shopt -s dotglob shopt -s globstar mkdir out for d in **/; do find "$d" -maxdepth 1 -type f -name "*.c" >> out/$(basename "$d") done …

5
ค้นหาไฟล์ใน linux และแยกไดเรกทอรีเฉพาะ
ฉันมีหน้าตาแบบนี้: rm -f crush-all.js find . -type f \( -name "*.js" ! -name "*-min*" ! -name "*console*" \) | while read line do cat "$line" >> crush-all.js echo >> crush-all.js done ฉันต้องการเพิ่มเพื่อยกเว้นไดเรกทอรีที่เรียกว่า "ทดสอบ" ในการค้นหา แต่ฉันไม่สามารถหาวิธีเพิ่ม "-type d" ได้ ฉันจะทำเช่นนั้นได้อย่างไร ขอบคุณ!
14 find 

1
ค้นหาไฟล์หรือไดเรกทอรีในโครงสร้างไดเรกทอรีทั้งหมด
ฉันจะค้นหาไฟล์ที่มีชื่อเฉพาะในทุบตีได้อย่างไร ฉันต้องการค้นหาทั้งระบบ ฉันลองใช้ find แต่ก็ทำได้แค่ระดับเดียวเท่านั้น
14 bash  directory  find 

1
วิธีการย้ายไฟล์บางไฟล์ไปยังไดเรกทอรีแม่ของพวกเขา?
ฉันต้องการดึง mp3 ทั้งหมดที่ตั้งใจใส่เข้าไปในโฟลเดอร์ flac จากโฟลเดอร์นั้นไปยังโฟลเดอร์หลัก ไม่สำคัญว่าโฟลเดอร์จะลึกแค่ไหนฉันแค่ต้องการย้ายไฟล์ที่ตรงกันหนึ่งไดเรกทอรีขึ้น นี่คือวิธีที่ฉันเลือกไฟล์ของฉัน: find . -path "*/flac/*" -name '*.mp3' สิ่งนี้ใช้ได้จากโฟลเดอร์เพลงของฉัน แต่ฉันติดอยู่ที่นี่ วิธีแก้ปัญหาทั้งหมดที่ฉันพบย้ายไฟล์ไปที่พาเรนต์ของโฟลเดอร์ปัจจุบันหรือต้องการโครงสร้างคงที่

2
เหตุใดคำสั่ง find จึงระเบิดใน / run /
ฉันใช้คำสั่งต่อไปนี้เพื่อตรวจสอบเวอร์ชั่นของไพ ธ อนตามที่ได้รับคำตอบนี้ มันทำงานยกเว้นข้อผิดพลาดหนึ่งที่แสดงด้านล่าง มีใครอธิบายได้ไหม $ sudo find / -type f -executable -iname 'python*' -exec file -i '{}' \; \ | awk -F: '/x-executable; charset=binary/ {print $1}' \ | xargs readlink -f | sort -u | xargs -I % sh -c 'echo -n "%: "; % -V' ข้อผิดพลาด: find: ‘/run/user/1000/gvfs’: …
13 permissions  find 

2
ฉันจะค้นหาไฟล์และโฟลเดอร์ที่โลกเขียนได้และตั้งค่าบิตเหนียวได้อย่างไร
ฉันต้องการทำสิ่งต่อไปนี้: จำเป็นต้องค้นหาไฟล์และโฟลเดอร์ทั้งหมดที่เขียนได้ทั่วโลกจาก/รูท หากพบว่าฉันต้องตรวจสอบว่ามีการตั้งค่าบิตเหนียวหรือไม่ หากไม่ได้ติดตั้งบิตกาวไว้ให้ตั้งค่า เราสามารถหาวิธีแก้ปัญหาบรรทัดคำสั่งสำหรับปัญหาประเภทนี้ได้หรือไม่?

1
คุณสมบัติของเปลือกเป็นแบบกลมหรือไม่?
ฉันอ่านคำถามและคำตอบมากมายเช่นนี้และคำถามนี้ ฉันรู้ว่า wildcards นั้นถูกขยายโดยเชลล์ก่อนที่จะรันคำสั่งและมันเป็นคุณสมบัติของเชลล์ อักขระตัวแทนยังทำงานกับคำสั่งเหล่านั้นที่สามารถยอมรับอาร์กิวเมนต์ได้มากมาย ในfind . -name *.rb ถ้าเรามีมากกว่าหนึ่งไฟล์ในไดเรกทอรีปัจจุบันfindจะทำให้เรามีข้อผิดพลาดเพราะการค้นหาไม่สามารถยอมรับข้อโต้แย้งหลาย ๆ และวิธีการแก้ปัญหานี้คือ: find . -name "*.rb" find . -name '*.rb' find . -name \*.rb เราหนีเครื่องหมายดอกจันและป้องกันการขยายโดยเชลล์ แต่อักขระตัวแทนเป็นคุณลักษณะของเชลล์ เมื่อเราหลบหนีเชลล์ดอกจันไม่ทราบความหมายของมันและควรหาไฟล์ชื่อ*.rbดังนั้นเครื่องหมายดอกจันจะถูกขยายในกรณีนี้อย่างไร
12 bash  find  wildcards 

5
ฉันจะป้องกันโฟลเดอร์ภายใน / tmp ไม่ให้ล้างข้อมูลได้อย่างไร
คำถามนี้เกี่ยวกับ Ubuntu 14.10 บนแล็ปท็อปนักพัฒนาของฉัน ฉันมีโฟลเดอร์/tmpที่แอปพลิเคชันใช้ในการวางสิ่งชั่วคราวไว้ในนั้น แอปพลิเคชันนี้มักจะสร้างโฟลเดอร์ชั่วคราวในบ้านของฉันและลบมันในภายหลัง ด้วยเหตุผลบางอย่างที่ไม่ทำงานเมื่อมีการเข้ารหัส homedir ดังนั้นฉันจึงสร้าง symlink ให้กับ/tmp/fooภายในบ้านของฉัน แอปพลิเคชันของฉันสามารถเขียนที่นั่นและทำให้เป็นโฟลเดอร์ย่อยชั่วคราว ตอนนี้/tmp/fooจะถูกลบทุกครั้งที่ฉันรีบูตเครื่อง จนถึงตอนนี้ฉันเพิ่งสร้างโฟลเดอร์ใหม่ด้วยตนเองหลังจากรีบูต ตอนนี้ฉันเรียนรู้ในไดเรคทอรี / tmp เป็นอย่างไรบ้าง? ว่ามีงานทำเช่นนั้น ฉันได้ดู/etc/init/mounted-tmp.confแต่ bashfu ของฉันและโดยเฉพาะอย่างยิ่ง findfu ของฉันไม่เพียงพอที่จะทำสิ่งที่ฉันต้องการ นี่คือข้อความที่ตัดตอนมาจากไฟล์: EXCEPT='! -name . ! ( -path ./lost+found -uid 0 ) ! ( -path ./quota.user -uid 0 ) ! ( -path ./aquota.user -uid 0 ) ! …
12 bash  14.10  find 

2
“ find: อาร์กิวเมนต์ที่หายไปถึง `-exec '” เมื่อใช้“ -exec rm -f {} \”
ฉันรันคำสั่งนี้: ~/shell_temp$ find . -type f -name "IMAG1806.jpg" -exec rm -f {}\ ฉันได้ผลลัพธ์ด้านล่าง: > IMAG1806.jpg Error: find: missing argument to `-exec' คำสั่งที่แน่นอนสำหรับการค้นหาไฟล์ใด ๆ จากไดเรกทอรีปัจจุบันและลบด้วย-exec?

2
จัดเรียงไฟล์ตามตัวอักษรก่อนประมวลผล
ฉันใช้คำสั่ง find . -type f -exec sha256sum {} \; > sha256SumOutput เพื่อแฮชไฟล์ทุกไฟล์ในลำดับชั้นของโฟลเดอร์ น่าเสียดายที่sha256sumไม่ได้รับชื่อไฟล์จากfindตัวอักษรอื่น ๆ จะแก้ไขได้อย่างไร? ฉันต้องการสั่งให้พวกเขาก่อนที่พวกเขาจะถูกแฮชดังนั้นพวกเขาจึงถูกแฮชตามลำดับตัวอักษร (นี่มีเหตุผล)
12 find 

3
ลบไดเร็กทอรีพาเรนต์ (ไม่ว่าง) หากไดเร็กทอรีย่อยที่ระบุว่างเปล่า
ฉันต้องเก็บไดเรกทอรีทั้งหมดที่มีไฟล์ในไดเรกทอรีย่อยที่เฉพาะเจาะจง แต่เพื่อลบส่วนที่เหลือทั้งหมดไดเรกทอรีที่ไดเรกทอรีย่อยว่างเปล่า จะมีความเฉพาะเจาะจงมากขึ้นที่นี่เป็นโครงสร้าง: A | |--------312311 | | | |----Recording | |----a.txt | |----b.txt | | |--------453453 | |----Recording | | | |-------a.mp3 | |----a.txt | |----b.txt | | |--------566532 | |----Recording | |----a.txt | |----b.txt ไดเรกทอรีย่อยอาจมีหรือไม่มีไฟล์ ดังนั้นฉันต้องลบไดเรกทอรีทั้งหมดเช่น '312311' & '566532' และควรมีเพียง 453453 เท่านั้นที่มีข้อมูลทั้งหมดอยู่ในนั้นเพราะมีไฟล์ในโฟลเดอร์ 'Recording' ซึ่งเป็นไดเรกทอรีเฉพาะสำหรับฉัน ฉันเห็นโพสต์จำนวนมาก แต่ลิงก์ไปยังชื่อไฟล์เฉพาะจำนวนมาก ความช่วยเหลือใด ๆ …

2
นับจำนวนไฟล์ในโฟลเดอร์ต่อวัน
ฉันสามารถค้นหาจำนวนไฟล์ทั้งหมดในโฟลเดอร์ แต่ฉันได้จำนวนมาก find . -type f | wc -l #find number of files in DIR ls -lrt #list all files order by date วิธีค้นหาจำนวนไฟล์วันละเท่ากัน ดังนั้นผลลัพธ์ควรเป็นดังนี้: # left number is number of files and right is one day. 109294 2016-06-27 101555 2016-06-26 88123 2016-06-25 ... etc.

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