locate
และสายพันธุ์ของมันมีแนวโน้มที่จะเป็นวิธีที่รวดเร็ว
# updatedb # run as root, possibly using sudo, e.g. sudo -b updatedb. If file is on the system for more than a day it should already be in the index and this can be skipped
$ locate -i book1
หากค้นหาไม่พร้อมใช้งานคุณสามารถใช้find
แทน มันมักจะช้ากว่า แต่ก็แม่นยำกว่ามาก
หากคุณมีพาร์ติชันเดียว: (เรียกใช้เป็นรูทหากผู้ใช้ของคุณอาจไม่สามารถเข้าถึงไฟล์ได้)
$ find / -xdev -iname 'book1*' -print # If the iname extension to find is available
$ find / -xdev -print | grep -F -i /book1 # if iname is not available
หากคุณไม่รวม-xdev
find
สิ่งที่ค้นหาในพาร์ทิชันอื่น ๆ เช่น/proc
และ/sys
ซึ่งมีแนวโน้มที่จะทำให้หน้าจอของคุณมีข้อผิดพลาดโดยเฉพาะอย่างยิ่งถ้าคุณไม่รูท (ข้อผิดพลาดสามารถซ่อนได้โดยต่อท้าย2> /dev/null
คำสั่ง find (ควรลบความคิดเห็น))
หากคุณมีหลายพาร์ติชันและคุณไม่ทราบว่ามีไฟล์ใดอยู่คุณสามารถรับรายการด้วยlsblk
(บนระบบปฏิบัติการบน Linux, การแยกวิเคราะห์df
เอาท์พุทเป็นตัวเลือกอย่างอื่น) และฟีดลงใน find: (รูทอีกครั้งถ้าคุณ ไม่ทราบว่าคุณสามารถเข้าถึงไฟล์ได้หรือไม่)
$ find $(lsblk -O MOUNTPOINT -n | grep -F /) -xdev -iname 'book1*' -print # GNU-based OSes
$ find $(df -P|awk '$1 ~ /^\/dev/ {print $NF}') -xdev | grep -F -i book1 # Non-GNU based OSes.
(นี่เป็นบิตที่เปราะบางหากหนึ่งในจุดเมาท์ของคุณมีช่องว่าง) ( df
พารามิเตอร์อาจต้องปรับแต่ง - P ทำให้ GNU df
ให้เอาต์พุต POSIX มาตรฐานรุ่นอื่น ๆ อาจมีพารามิเตอร์อื่น ๆ หรือต้องการให้อ่านหน้าคนของคุณ)
grep -F
ไม่รวมสิ่งอื่น ๆ กลับมาเช่นเดียวกับพาร์ทิชันแลกเปลี่ยน
ในเวอร์ชันที่ไม่ใช่ GNU ให้ awk ค้นหาอุปกรณ์ที่มีการเมานต์เริ่มต้น/dev
เพื่อรับระบบไฟล์จริงจากนั้นพิมพ์ฟิลด์สุดท้าย (จุดเมานท์) จากdf
เอาต์พุต
สิ่งนี้จะถือว่าเชลล์คล้าย bourne ( ksh
และbash
ควรใช้งานถ้าคุณใช้csh
ตัวแปรให้เริ่มเชลล์เชลล์แบบสคริปต์ได้ก่อนที่จะลอง)
Book1
และอยู่ในไดเรกทอรีที่คุณสามารถอ่านได้จากนั้นfind / -iname book1
จะค้นหาไฟล์นั้น คุณแน่ใจว่ามันเป็นจริงBook1
และไม่Book1.xyz
?