คำสั่ง find / grep โดยไม่ต้องค้นหาการแชร์ที่เมาท์


34

เมื่อฉันใช้คำสั่ง find ฉันเกือบจะต้องค้นหาไดรฟ์ในเครื่องเสมอ แต่ฉันมักจะมีการแชร์เครือข่ายขนาดใหญ่เป็นพิเศษและสิ่งเหล่านี้รวมอยู่ในการค้นหา มีวิธีง่าย ๆ ในการแยกคำสั่งเหล่านั้นในคำสั่ง find, grep และคำสั่งอื่นที่คล้ายคลึงกันหรือไม่? ตัวอย่าง:

ค้นหา / -name .vimrc

คำตอบ:


46

ใช้-fstype localตัวเลือกเพื่อค้นหา:

find / -fstype local -name .vimrc

หากคุณต้องการยกเว้นเส้นทางที่เฉพาะเจาะจงคุณสามารถใช้-prune:

find / -name /path/to/ignore -prune -o -name .vimrc

ปรับปรุง:

localหลอก-fstype มีอยู่ในรุ่นหาที่มาพร้อมกับ OS X แต่ไม่ได้อยู่ใน GNU หา ( fstypes รับการยอมรับโดย GNU หา )

หากคุณใช้ GNU find (ตามที่ใช้กับระบบ Linux ส่วนใหญ่) คุณจะต้องการใช้-mount:

find / -mount -name .vimrc

มันใช้งานได้สำหรับ grep ด้วยหรือไม่
Flotsam N. Jetsam

1
ฉันไม่คิดว่า grep มีตัวเลือกดังกล่าว ฉันมักจะใช้findท่อgrepตามที่ปรากฏในคำตอบนี้: superuser.com/questions/80033/... เมื่อเร็ว ๆ นี้ฉันใช้ack( betterthangrep.com ) แทน แต่ackดูเหมือนจะไม่มีตัวเลือกในการค้นหาเฉพาะไดรฟ์ในเครื่อง
Doug Harris

การแก้ไขของฉันถูกปฏิเสธไปที่นี่ดังนั้นเพียงแค่แสดงความคิดเห็น โดยทั่วไปตัวอย่างแรกนั้นผิดเนื่องจากคุณต้องเพิ่ม-pruneเข้าไปหรือจะยังคงผ่านระบบไฟล์ที่ไม่ต้องการ ตัวอย่างที่สองที่ฉันเชื่อว่าควรจะเป็น-pathแทนที่จะเป็น-nameดังนั้นมันจะไม่สนใจเส้นทาง FWIW ... ตัวอย่างล่าสุดใช้งานได้มันยังคงอยู่ใน "ระบบแฟ้มปัจจุบัน" ดังนั้นจึงไม่ข้ามไปหาคนอื่น
rogerdpack


0

คำถามดั้งเดิมคือการหาบนดิสก์ภายในเครื่องเท่านั้นดังนั้นเพื่อความสมบูรณ์นี่คือสิ่งที่ฉันใช้

for PART in `awk '(!/^#/ && $6 != "0" || $3 == "xfs" ) { print $2 }' /etc/fstab 2>/dev/null`; do find $PART -xdev -name .vimrc -print 2>/dev/null; done

ตราบใดที่มีการติดตั้ง fstab ของคุณอย่างถูกต้องมันควรค้นหาเฉพาะดิสก์ในเครื่องเท่านั้น เช่น cifs mounts ควรมีการตั้งค่าสถานะสุดท้ายเป็น 0 ฉันรวม OR สำหรับระบบไฟล์ xfs เมื่อเราเริ่มไปที่ RHEL7 พวกเขาควรตั้งค่าเป็น 0 เช่นกันเพราะพวกเขาไม่ได้ตั้งใจจะทำดิสก์ reorg หลังจากรีสตาร์ทหลายครั้ง

หวังว่าจะช่วย

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