คำสั่ง find และตัวเลือกจะแสดงอยู่ในตัวอย่าง วิธีค้นหาไฟล์ใน Linux โดยใช้คำสั่ง find ค้นหาโฟลเดอร์ linux

เริ่มด้วย เซิร์ฟเวอร์ลินุกซ์ผู้ใช้มักประสบปัญหาในการค้นหาไฟล์ที่จำเป็น

บทช่วยสอนนี้ครอบคลุมถึงการใช้คำสั่ง find ที่เกี่ยวข้อง ซึ่งช่วยให้คุณสามารถค้นหาไฟล์โดยใช้ตัวกรองและพารามิเตอร์ต่างๆ นอกจากนี้ คู่มือนี้ยังครอบคลุมถึงคำสั่งระบุตำแหน่งโดยย่อ ซึ่งสามารถใช้เพื่อระบุตำแหน่งคำสั่งได้

ค้นหาตามชื่อไฟล์

แน่นอนว่าการค้นหาไฟล์ตามชื่อเป็นวิธีที่ชัดเจนที่สุดในการค้นหาไฟล์ที่คุณต้องการ

หากต้องการใช้สิ่งนี้:

ค้นหา -name "แบบสอบถาม"

คำสั่งนี้จะคำนึงถึงขนาดตัวพิมพ์ (นั่นคือ ถือว่าไฟล์ชื่อ file และ File เป็นไฟล์สองไฟล์ที่แตกต่างกัน)

หากต้องการค้นหาไฟล์ตามชื่อ ไม่คำนึงถึงขนาดตัวพิมพ์ ให้พิมพ์:

ค้นหา -iname "แบบสอบถาม"

หากต้องการค้นหาไฟล์ที่ไม่ตรงกับรูปแบบใดรูปแบบหนึ่ง คุณต้องกลับการค้นหาโดยใช้แฟล็ก -not หรืออักขระเมตา "!" โปรดทราบว่าเมื่อใช้ "!" คุณต้องหลีกเลี่ยงอักขระเพื่อที่ bash shell จะไม่ตีความ "!" ก่อนที่จะดำเนินการคำสั่ง find เสียอีก

ค้นหา - ไม่ใช่ - ชื่อ "query_to_avoid"

หา\! - ชื่อ "query_to_avoid"

ค้นหาตามประเภทไฟล์

การใช้พารามิเตอร์ "-type" คุณสามารถระบุประเภทได้ ไฟล์ที่ต้องการ- มันทำงานเช่นนี้:

ค้นหา -type type_descriptor แบบสอบถาม

ต่อไปนี้เป็นรายการคำอธิบายทั่วไปที่สามารถใช้เพื่อระบุประเภทไฟล์:

  • : ไฟล์ปกติ;
  • : ไดเรกทอรี;
  • : ลิงก์สัญลักษณ์;
  • : อุปกรณ์ตัวละคร;
  • : บล็อกอุปกรณ์

ตัวอย่างเช่น หากต้องการค้นหาอุปกรณ์อักขระทั้งหมดในระบบ คุณต้องรันคำสั่ง:

ค้นหา / -พิมพ์ c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/ไมโครโค้ด
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .

หากต้องการค้นหาไฟล์ทั้งหมดที่ลงท้ายด้วย .conf ให้ใช้:

ค้นหา / -พิมพ์ f -name "*.conf"
/var/lib/ucf/cache/:etc:rsyslog.d:50-default.conf
/usr/share/base-files/nsswitch.conf
/usr/share/initramfs-tools/event-driven/upstart-jobs/mountall.conf
/usr/share/rsyslog/50-default.conf
/usr/share/adduser/adduser.conf
/usr/share/davfs2/davfs2.conf
/usr/share/debconf/debconf.conf
/usr/share/doc/apt-utils/examples/apt-ftparchive.conf
. . .

กรองตามเวลาและขนาด

คำสั่ง find ช่วยให้คุณสามารถกรองผลลัพธ์ตามขนาดและเวลาของการเปลี่ยนแปลงครั้งล่าสุด

ขนาดไฟล์

หากต้องการกรองไฟล์ตามขนาด ให้ใช้พารามิเตอร์ -size

คุณต้องเพิ่มส่วนต่อท้ายที่ส่วนท้ายของค่าเพื่อระบุขนาด:

  • ค:ไบต์
  • เค:กิโลไบต์
  • ม:เมกะไบต์
  • กรัม:กิกะไบต์
  • ข:บล็อกขนาด 512 ไบต์

หากต้องการค้นหาไฟล์ที่มีขนาด 50 ไบต์ ให้พิมพ์:

ค้นหา / -ขนาด 50c

หากต้องการค้นหาไฟล์ที่มีขนาดเล็กกว่า 50 ไบต์ ให้ใช้สัญลักษณ์ "-" หน้าค่า:

ค้นหา / -ขนาด -50c

ดังนั้น หากต้องการค้นหาไฟล์ที่มีขนาดใหญ่กว่า 700 เมกะไบต์ ให้ใช้สัญลักษณ์ + หน้าค่า คำสั่งมีลักษณะดังนี้:

ค้นหา / -ขนาด +700M

ค้นหาตามเวลา

Linux เก็บข้อมูลเกี่ยวกับเวลาเข้าถึง เวลาแก้ไข และเวลาเปลี่ยนแปลง

  • เวลาในการเข้าถึง: เวลาที่เข้าถึงไฟล์ครั้งล่าสุด (เมื่อไฟล์ถูกอ่านหรือต่อท้าย)
  • เวลาแก้ไข: เวลาของการแก้ไขเนื้อหาไฟล์ครั้งล่าสุด
  • เวลาเปลี่ยน: เวลาของการเปลี่ยนแปลงครั้งล่าสุดของ inode ของไฟล์

หากต้องการกรองไฟล์ตามเวลา ให้ใช้พารามิเตอร์ "-atime", "-mtime" และ "-ctime" ตามลำดับ

ความหมาย พารามิเตอร์นี้ระบุจำนวนวันที่ไฟล์ถูกแก้ไข เช่นเดียวกับขนาดไฟล์ คุณสามารถใช้สัญลักษณ์ – และ + เพื่อแก้ไขไฟล์น้อยกว่าหรือมากกว่า n วันที่ผ่านมาได้

นั่นคือหากต้องการค้นหาไฟล์ที่มีการแก้ไขเนื้อหาเมื่อ 1 วันก่อนให้ใช้:

หากต้องการแสดงรายการไฟล์ที่เข้าถึงน้อยกว่า 1 วันที่ผ่านมา ให้ใช้:

ค้นหา / -atime -1

หากต้องการค้นหาไฟล์ที่มีการเปลี่ยนแปลง inodes มากกว่าสามวันที่ผ่านมา ให้ป้อน:

ค้นหา / -ctime +3

นอกจากนี้ยังมีตัวเลือกที่เกี่ยวข้องซึ่งให้คุณระบุนาทีแทนวัน:

นี่จะส่งคืนไฟล์ที่เนื้อหาถูกเปลี่ยนแปลงเมื่อนาทีที่แล้ว

นอกจากนี้ คำสั่ง find ยังสามารถเปรียบเทียบไฟล์และส่งออกไฟล์ที่ใหม่กว่าได้:

ค้นหา / -myfile ใหม่กว่า

ค้นหาตามเจ้าของและสิทธิ์

เมื่อใช้คำสั่ง find คุณสามารถค้นหาไฟล์ตามเจ้าของหรือสิทธิ์ของไฟล์ได้

สำหรับสิ่งนี้ จะใช้พารามิเตอร์ –ผู้ใช้, –กลุ่ม และ -perm ตามลำดับ ตัวอย่างเช่น หากต้องการค้นหาไฟล์ที่เป็นของผู้ใช้ชื่อ syslog ให้พิมพ์:

ค้นหา / -ผู้ใช้ syslog

ในทำนองเดียวกัน หากต้องการแสดงรายการไฟล์ที่เป็นของกลุ่มเงา ให้ใช้:

ค้นหา / -กลุ่มเงา

คุณยังสามารถค้นหาไฟล์ด้วยสิทธิพิเศษได้

หากต้องการค้นหาไฟล์ที่มีสิทธิ์เฉพาะ ให้ใช้:

ค้นหา / - ​​ดัดผม 644

บรรทัดนี้จะแสดงไฟล์ทั้งหมดที่มีสิทธิ์เหล่านี้

หากต้องการแสดงรายการไฟล์ทั้งหมดที่มีสิทธิ์มากกว่าหรือเท่ากับไฟล์ที่ระบุ ให้ใช้ไวยากรณ์:

ค้นหา / - ​​ดัดผม -644

ซึ่งจะส่งคืนไฟล์ทั้งหมดที่มีสิทธิ์เพิ่มเติม (เช่น ไฟล์ที่มีสิทธิ์ 744)

การกรองไฟล์ตามความลึก

เพื่อรันตัวอย่าง ส่วนนี้สร้างโครงสร้างไดเร็กทอรีในไดเร็กทอรีชั่วคราว ควรประกอบด้วยไดเร็กทอรีสามระดับ โดยมีสิบไดเร็กทอรีในระดับแรก แต่ละไดเร็กทอรี (รวมถึงไดเร็กทอรีทดสอบ) ต้องมีไฟล์ 10 ไฟล์และไดเร็กทอรีย่อย 10 ไดเร็กทอรี

หากต้องการสร้างโครงสร้างดังกล่าว ให้รันคำสั่งต่อไปนี้:

ซีดี
mkdir -p ~/test/level1dir(1..10)/level2dir(1..10)/level3dir(1..10)
สัมผัส ~/test/(ไฟล์(1..10),level1dir(1..10)/(ไฟล์(1..10),level2dir(1..10)/(ไฟล์(1..10),level3dir( 1..10)/ไฟล์(1..10))))
ซีดี ~/test

หากต้องการตรวจสอบโครงสร้างที่คุณเพิ่งสร้างขึ้นและตรวจสอบว่าทุกอย่างถูกสร้างขึ้นอย่างถูกต้อง ให้ใช้คำสั่ง ls และ cd จากนั้นกลับไปที่การทดสอบไดเร็กทอรีทดสอบ:

ส่วนนี้จะแสดงวิธีแยกไดเร็กทอรีเฉพาะจากโครงสร้างนี้ ในการเริ่มต้น ให้ลองค้นหาไฟล์ตามชื่อแบบง่ายๆ:

ค้นหา -name file1







./level1dir7/level2dir8/level3dir6/file1
./level1dir7/level2dir8/level3dir5/file1

. . .

คำสั่งนี้ให้ผลลัพธ์ที่ค่อนข้างใหญ่โต เมื่อส่งผลลัพธ์นี้ไปที่ตัวนับ คุณจะเห็นว่าในตอนท้ายมีไฟล์ 1111 ไฟล์ออกมา

ค้นหา -name file1 | สุขา-ล
1111

แน่นอนว่า ในกรณีส่วนใหญ่ ข้อสรุปนี้ยาวเกินไปและไม่สะดวก พยายามจำกัดให้แคบลง

ในการดำเนินการนี้ คุณสามารถใช้พารามิเตอร์ –maxdeep เพื่อตั้งค่าความลึกในการค้นหาสูงสุด:

ค้นหา -maxdeep num - แบบสอบถามชื่อ

หากต้องการค้นหา file1 ในไดเร็กทอรีระดับ 1 และสูงกว่า ให้ระบุความลึกสูงสุด 2 (1 สำหรับไดเร็กทอรี ระดับบนสุดและ 1 สำหรับไดเร็กทอรีระดับ 1)

ค้นหา -maxdeep 2 -name file1
./level1dir7/file1
./level1dir1/file1
./level1dir3/file1
./level1dir8/file1
./level1dir6/file1
./file1
./level1dir2/file1
./level1dir9/file1
./level1dir4/file1
./level1dir5/file1
./level1dir10/file1

อย่างที่คุณเห็นผลลัพธ์นี้มีลักษณะที่สะดวกกว่ามาก

นอกจากนี้ คุณสามารถระบุความลึกในการค้นหาขั้นต่ำได้:

ค้นหา -mindeep num - แบบสอบถามชื่อ

ใช้เพื่อค้นหาไฟล์ที่อยู่ท้ายสาขาไดเร็กทอรี:

ค้นหาไฟล์ -mindeep 4 -name
./level1dir7/level2dir8/level3dir9/file1
./level1dir7/level2dir8/level3dir3/file1
./level1dir7/level2dir8/level3dir4/file1
./level1dir7/level2dir8/level3dir1/file1
./level1dir7/level2dir8/level3dir8/file1
./level1dir7/level2dir8/level3dir7/file1
./level1dir7/level2dir8/level3dir2/file1
. . .

ผลลัพธ์นี้จะมีไฟล์จำนวนมาก (1,000) อีกครั้ง

สามารถรวมความลึกในการค้นหาสูงสุดและต่ำสุดเพื่อลดช่วงการค้นหา:

ค้นหา -mindeep 2 -maxdeep 3 -ไฟล์ชื่อ
./level1dir7/level2dir8/file1
./level1dir7/level2dir5/file1
./level1dir7/level2dir7/file1
./level1dir7/level2dir2/file1
./level1dir7/level2dir10/file1
./level1dir7/level2dir6/file1
./level1dir7/level2dir3/file1
./level1dir7/level2dir4/file1
./level1dir7/file1
. . .

การดำเนินการและการรวมคำสั่ง

ยูทิลิตี้การค้นหาช่วยให้คุณสามารถรันคำสั่งเสริมใด ๆ กับไฟล์ที่พบทั้งหมด ตัวเลือก –exec ใช้สำหรับสิ่งนี้ ไวยากรณ์พื้นฐานมีลักษณะดังนี้:

ค้นหา search_parameters -exec command_and_parameters () \;

อักขระ () ถูกใช้เป็นตัวยึดสำหรับไฟล์ที่พบ สัญลักษณ์ \; ใช้เพื่ออนุญาตให้ค้นหาเพื่อกำหนดตำแหน่งที่คำสั่งสิ้นสุด

ตัวอย่างเช่น คุณสามารถค้นหาไฟล์ที่มีสิทธิ์ 644 (เหมือนในส่วนก่อนหน้า) และเปลี่ยนสิทธิ์เป็น 664:

ซีดี ~/test
หา . -perm 644 -exec chmod 664 ()\;

จากนั้นคุณสามารถเปลี่ยนสิทธิ์ของไดเรกทอรีได้:

หา . -perm 755 -exec chmod 700 ()\;

หากต้องการเชื่อมโยงผลลัพธ์หลายรายการ ให้ใช้คำสั่ง -และ หรือ -หรือ คำสั่ง –and จะถือว่าถ้าละเว้น

หา . -ชื่อไฟล์1 -หรือ -ชื่อไฟล์9

การค้นหาไฟล์โดยใช้คำสั่ง Locate

คำสั่งระบุตำแหน่งเป็นอีกทางเลือกหนึ่งในการค้นหา โดยทั่วไปคำสั่งนี้จะเร็วกว่าและสามารถค้นหาระบบไฟล์ทั้งหมดได้อย่างง่ายดาย

คุณสามารถติดตั้งคำสั่งนี้โดยใช้ apt-get:

อัปเดต sudo apt-get
sudo apt-get ติดตั้ง mlocate

แต่เหตุใดคำสั่ง Loc จึงเร็วกว่าคำสั่ง Find? ประเด็นก็คือการค้นหานั้นขึ้นอยู่กับฐานข้อมูลของไฟล์ในระบบไฟล์

โดยทั่วไปแล้ว สคริปต์ cron จะอัพเดตฐานข้อมูลนี้วันละครั้ง แต่สามารถอัปเดตได้ด้วยตนเองเช่นกัน รันคำสั่งนี้:

ข้อควรจำ: ฐานข้อมูลต้องได้รับการอัปเดตเป็นประจำเพื่อให้มีข้อมูลปัจจุบัน มิฉะนั้นจะไม่สามารถค้นหาไฟล์ที่เพิ่งได้รับหรือสร้างขึ้นได้

หากต้องการค้นหาไฟล์โดยใช้คำสั่ง Loc เพียงใช้ไวยากรณ์ต่อไปนี้:

นอกจากนี้ยังสามารถกรองผลลัพธ์ได้อีกด้วย

ตัวอย่างเช่น หากต้องการส่งคืนเฉพาะไฟล์ที่มีการร้องขอนั้นเอง แทนที่จะแสดงรายการทุกไฟล์ที่มีการร้องขอในไดเร็กทอรีที่นำไปสู่ไฟล์นั้น คุณสามารถใช้แฟล็ก -b (เพื่อค้นหาเฉพาะชื่อฐาน ซึ่งเป็นชื่อฐานของไฟล์):

หากต้องการให้คำสั่ง ค้นหา ส่งคืนเฉพาะไฟล์ที่ยังคงมีอยู่บนระบบไฟล์ (นั่นคือ ไฟล์ที่ไม่ถูกลบระหว่างครั้งสุดท้ายที่คุณรันอัพเดตและการเรียกเพื่อค้นหาตำแหน่งปัจจุบัน) ให้ใช้แฟล็ก -e:

หากต้องการดูสถิติที่จัดทำโดยคำสั่งระบุตำแหน่ง ให้ใช้ตัวเลือก –S:

ค้นหา -S
ฐานข้อมูล /var/lib/mlocate/mlocate.db:
3,315 ไดเรกทอรี
37,228 ไฟล์
1,504,439 ไบต์ในชื่อไฟล์
594,851 ไบต์ที่ใช้จัดเก็บฐานข้อมูล

ผลลัพธ์

คำสั่งค้นหาและระบุตำแหน่งเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการค้นหาไฟล์บนระบบปฏิบัติการที่คล้ายกับ UNIX ยูทิลิตี้แต่ละอย่างมีข้อดีในตัวเอง

แม้ว่าคำสั่งค้นหาและระบุตำแหน่งจะมีประสิทธิภาพมากในตัวเอง แต่ก็สามารถปรับปรุงได้โดยการรวมคำสั่งเหล่านั้นเข้ากับคำสั่งอื่น เมื่อคุณได้เรียนรู้วิธีใช้การค้นหาและค้นหาตำแหน่งแล้ว ให้ลองกรองผลลัพธ์โดยใช้คำสั่ง wc, sort และ grep

แท็ก: ,

อัปเดต: 11/02/2019 เผยแพร่: 25/07/2016

คำสั่งการค้นหาที่หลากหลายและใช้งานได้ดีที่สุดใน Linux คือ หา.บทความนี้เป็นเพียงข้อมูลสรุปพร้อมตัวอย่างการใช้งาน

ไวยากรณ์ทั่วไป

หา<где искать> <опции>

<где искать> — เส้นทางไปยังไดเร็กทอรีรากที่จะเริ่มการค้นหา ตัวอย่างเช่น ค้นหา /home/user - ค้นหาในไดเร็กทอรีที่เหมาะสม สำหรับไดเรกทอรีปัจจุบัน คุณต้องใช้จุด "."

<опции> — ชุดของกฎที่ใช้ในการค้นหา

* โดยค่าเริ่มต้น การค้นหาเป็นแบบเรียกซ้ำ หากต้องการค้นหาในไดเร็กทอรีเฉพาะ คุณสามารถใช้ตัวเลือกนี้ได้ ความลึกสูงสุด.

คำอธิบายของตัวเลือก

ตัวเลือก คำอธิบาย
-ชื่อ ค้นหาตามชื่อ
-iname ค้นหาตามชื่อโดยคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
-พิมพ์

ประเภทวัตถุการค้นหา ตัวเลือกที่เป็นไปได้:

  • ฉ - ไฟล์;
  • d - ไดเร็กทอรี;
  • ล. - ลิงค์;
  • พี - ท่อ;
  • ส - ซ็อกเก็ต
-ขนาด ขนาดวัตถุ ระบุไว้ในบล็อกขนาด 512 ไบต์หรือเพียงไบต์ (โดยมีอักขระ "c")
-mtime เวลาแก้ไขไฟล์ ระบุเป็นวัน
-มม เปลี่ยนเวลาเป็นนาที
-เวลา เวลาที่เข้าถึงออบเจ็กต์ครั้งล่าสุดในหน่วยเป็นวัน
-อามิน เวลาของการโทรครั้งสุดท้ายเป็นนาที
-ctime แก้ไขครั้งล่าสุดเจ้าของหรือสิทธิในวัตถุในไม่กี่วัน
-ซม การเปลี่ยนแปลงเจ้าของหรือการอนุญาตครั้งล่าสุดในไม่กี่นาที
-ผู้ใช้ ค้นหาโดยเจ้าของ
-กลุ่ม โดยกลุ่ม.
-ดัดผม ด้วยสิทธิ์การเข้าถึงบางอย่าง
-ความลึก การค้นหาไม่ควรเริ่มต้นจากรูท แต่จากไดเร็กทอรีที่ซ้อนกันที่ลึกที่สุด
-ความลึกสูงสุด ความลึกการค้นหาสูงสุดในแค็ตตาล็อก -maxdeep 0 - ค้นหาเฉพาะในไดเร็กทอรีปัจจุบันเท่านั้น ตามค่าเริ่มต้น การค้นหาเป็นแบบเรียกซ้ำ
-พรุน ไม่รวมไดเรกทอรีที่ระบุไว้
-เมานต์ อย่าย้ายไปยังระบบไฟล์อื่น
-regex ตามชื่อที่มีการแสดงออกปกติ
-ประเภทนิพจน์ทั่วไป<тип> ประเภทนิพจน์ทั่วไป
-ล แสดงเนื้อหาของลิงก์สัญลักษณ์ (symlinks)
-ว่างเปล่า ค้นหาไดเร็กทอรีว่าง
-ลบ ลบสิ่งที่พบออกไป
-ล ส่งออกเป็น ls -dgils
-พิมพ์ แสดงสิ่งที่พบ
-พิมพ์0 เส้นทางสู่วัตถุที่พบ
-ดำเนินการ<команда> {} \; ดำเนินการคำสั่งกับอันที่พบ
-ตกลง ออกพร้อมท์ก่อนดำเนินการ -exec

สามารถรับชุดตัวเลือกปัจจุบันทั้งหมดได้ด้วยคำสั่ง ผู้ชายค้นหา.

ตัวอย่างการใช้ find

ค้นหาไฟล์ตามชื่อ

ค้นหา / - ​​ชื่อ "file.txt"

* วี ในตัวอย่างนี้จะค้นหาไฟล์ชื่อ ไฟล์.txtทั่วทั้งระบบไฟล์เริ่มต้นที่รูท / .

ค้นหาไฟล์ตามส่วนหนึ่งของชื่อ:

ค้นหา / - ​​ชื่อ "*.tmp"

* คำสั่งนี้จะค้นหาโฟลเดอร์หรือไฟล์ทั้งหมดในไดเร็กทอรีราก /, ลงท้ายด้วย .tmp

ค้นหาไฟล์หรือโฟลเดอร์ทั้งหมดที่ขึ้นต้นด้วย เซส_และปิดท้ายด้วย ซีดี

หา . -ชื่อ "sess_*" -a -ชื่อ "*cd"

* -a:ตรรกะและ -o:ตรรกะหรือ

ค้นหาตามวันที่

1. ค้นหาไฟล์ที่มีการเปลี่ยนแปลงเมื่อหลายวันก่อน:

หา . -พิมพ์ f -mtime +60

* คำสั่งนี้จะค้นหาไฟล์ที่มีการเปลี่ยนแปลงเกิน 60 วันที่ผ่านมา

2. ค้นหาไฟล์โดยใช้ ใหม่กว่า- ตัวเลือกนี้มีให้ใช้งานตั้งแต่เวอร์ชัน 4.3.3 (คุณสามารถดูได้โดยใช้คำสั่ง ค้นหา --version).

ก) วันที่เปลี่ยนแปลง:

หา . -type f -newermt "2019-11-02 00:00"

* จะแสดงไฟล์ทั้งหมดที่มีการเปลี่ยนแปลงตั้งแต่ 11/02/2019 00:00 น.

หา . -type f -newermt 2019-10-31 ! -ใหม่ 2019-11-02

* จะค้นหาไฟล์ทั้งหมดที่มีการเปลี่ยนแปลงระหว่างวันที่ 31/10/2562 ถึง 11/01/2562 (รวมด้วย)

b) วันที่สมัคร:

หา . -ประเภท f -ใหม่ 2019-10-08

* ไฟล์ทั้งหมดเข้าถึงตั้งแต่ 10/08/2019

หา . -type f -ใหม่ 2019-10-01 ! -ใหม่ 2019-11-01

* ไฟล์ทั้งหมดเข้าถึงได้ในเดือนตุลาคม

c) วันที่สร้าง:

หา . -ประเภท f -ใหม่ 2019-09-07

หา . -type f -ใหม่ 2019-09-07 ! - ใหม่ "2019-09-09 07:50:00"

* ไฟล์ที่สร้างตั้งแต่ 09/07/2019 00:00:00 ถึง 09/09/2019 07:50

ตามประเภท

ค้นหาเฉพาะไฟล์ในไดเร็กทอรีปัจจุบันและโฟลเดอร์ย่อยทั้งหมด:

* — ค้นหาเฉพาะไฟล์

ค้นหาตามสิทธิ์

เรากำลังมองหาทุกสิ่งทางด้านขวาสำหรับการอ่านและการเขียน:

ค้นหา / - ​​ดัดผม 0666

เราค้นหาไฟล์ที่มีเพียงเจ้าของเท่านั้นที่สามารถเข้าถึงได้:

ค้นหา / - ​​ดัดผม 0600

ค้นหาไฟล์ตามเนื้อหา

ค้นหา / -พิมพ์ f -exec grep -i -H "เนื้อหา" () \;

* ในตัวอย่างนี้ การค้นหาแบบเรียกซ้ำจะดำเนินการสำหรับไฟล์ทั้งหมดในไดเร็กทอรี / และรายการที่มีสตริงจะปรากฏขึ้น เนื้อหา.

เรียงตามวันที่แก้ไข

ค้นหา /data -type f -printf "%TY-%Tm-%Td %TT %p\n" | เรียงลำดับ -r

* คำสั่งจะค้นหาไฟล์ทั้งหมดในไดเร็กทอรี /ข้อมูลจะเพิ่มวันที่แก้ไขชื่อและจัดเรียงข้อมูลตามชื่อ ด้วยเหตุนี้ ฉันจึงได้รับไฟล์ต่างๆ ตามลำดับที่มีการเปลี่ยนแปลง

ค้นหา /home/user/* -type d -exec chmod 2700 () \;

* ในตัวอย่างนี้ เรากำลังค้นหาไดเร็กทอรีทั้งหมด ( ประเภทง) ในไดเร็กทอรี /home/userและกำหนดสิทธิให้พวกเขา 2700 .

การทำความสะอาดตามกำหนดเวลา

ทีม หาสะดวกต่อการใช้งาน การลบอัตโนมัติไฟล์ที่ล้าสมัย

เปิดงาน cron เพื่อแก้ไข:

และเพิ่ม:

0 0 * * * /bin/find /tmp -mtime +14 -exec rm () \;

* ในตัวอย่างนี้ เราจะลบไฟล์และโฟลเดอร์ทั้งหมดออกจากไดเร็กทอรี /ทีเอ็มพี,หนึ่งในร้อยมีอายุมากกว่า 14 วัน งานดำเนินทุกวันที่ 00:00 .
* ดูเส้นทางแบบเต็มไปยังไฟล์ปฏิบัติการที่ค้นหาโดยใช้คำสั่ง ซึ่งพบว่า- บนระบบ UNIX ที่แตกต่างกัน สามารถอยู่ในตำแหน่งที่ต่างกันได้

    ค้นหาไฟล์ตามชื่อของมันการค้นหาที่ง่ายที่สุดนี้ดำเนินการโดยใช้ยูทิลิตีการค้นหา คำสั่งด้านล่างจะค้นหาไฟล์ในไดเร็กทอรีปัจจุบันและไดเร็กทอรีย่อยทั้งหมด

    ค้นหา -iname "ชื่อไฟล์"

    • พิมพ์ -iname แทน -name เพื่อละเว้นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ในชื่อไฟล์ที่ป้อน คำสั่ง -name คำนึงถึงขนาดตัวพิมพ์
  1. เริ่มค้นหาในไดเร็กทอรีรากหากต้องการดำเนินการค้นหาทั่วทั้งระบบ ให้เพิ่ม / ตัวแก้ไขลงในแบบสอบถาม ในกรณีนี้ คำสั่ง find จะค้นหาไฟล์ในทุกไดเร็กทอรี โดยเริ่มจากไดเร็กทอรีรูท

    ค้นหา / -iname "ชื่อไฟล์"

    • คุณสามารถเริ่มค้นหาในไดเร็กทอรีเฉพาะได้ หากต้องการทำสิ่งนี้ ให้แทนที่ / ด้วยพาธไดเร็กทอรี เช่น /home/max
    • สามารถนำมาใช้. แทน / เพื่อค้นหาไฟล์เฉพาะในไดเร็กทอรีปัจจุบันและไดเร็กทอรีย่อย
  2. ใช้สัญลักษณ์ตัวแทน* เพื่อค้นหาไฟล์ที่มีชื่อตรงกับส่วนหนึ่งของคำขอ การใช้อักขระตัวแทน * คุณสามารถค้นหาไฟล์ได้ ชื่อเต็มซึ่งไม่ทราบ หรือค้นหาไฟล์ทั้งหมดที่มีนามสกุลเฉพาะ

    ค้นหา /home/max -iname "*.conf"

    • คำสั่งนี้จะค้นหาไฟล์ทั้งหมดที่มีนามสกุล .conf ในโฟลเดอร์ Max ของผู้ใช้ (และโฟลเดอร์ย่อย)
    • ใช้คำสั่งนี้เพื่อค้นหาไฟล์ทั้งหมดที่มีชื่อตรงกับส่วนหนึ่งของแบบสอบถาม เช่น หากคุณมีไฟล์ที่เกี่ยวข้องกับ WikiHow จำนวนมากในคอมพิวเตอร์ของคุณ ให้ค้นหาไฟล์ทั้งหมดโดยพิมพ์ "*wiki*"
  3. ทำให้การจัดการผลการค้นหาของคุณง่ายขึ้นหากมีผลการค้นหามากเกินไป ก็จะเป็นการยากที่จะค้นหาไฟล์ที่คุณต้องการ ใช้ | เพื่อให้ผลการค้นหาถูกกรองด้วยคำสั่ง less ซึ่งจะทำให้เรียกดูและกรองผลการค้นหาของคุณได้ง่ายขึ้น

    ค้นหา /home/max -iname "*.conf" |

    น้อยค้นหาองค์ประกอบเฉพาะ

    ใช้ตัวแก้ไขเพื่อแสดงเฉพาะบางรายการในผลการค้นหา คุณสามารถค้นหาไฟล์ปกติ (f), ไดเร็กทอรี (d), ลิงก์สัญลักษณ์ (l), อุปกรณ์ I/O แบบอักขระ (c) และอุปกรณ์บล็อก (b)

  4. ค้นหา / -type f -iname "ชื่อไฟล์"กรองผลการค้นหาตามขนาดไฟล์

    หากคุณมีไฟล์ชื่อคล้ายกันจำนวนมากในคอมพิวเตอร์ของคุณ แต่คุณทราบขนาดของไฟล์ที่คุณกำลังมองหา ให้กรองผลการค้นหาตามขนาดไฟล์

    • คำสั่งนี้จะค้นหาไฟล์ทั้งหมดที่มีขนาดใหญ่กว่า 50 MB ใช้ตัวแก้ไข + หรือ - เพื่อระบุขนาดที่เพิ่มขึ้นหรือลดลง หากไม่มีตัวแก้ไข + หรือ - คำสั่งจะค้นหาไฟล์ที่มีขนาดตรงกับขนาดที่ระบุทุกประการ
    • คุณสามารถกรองผลการค้นหาเป็นไบต์ (c) กิโลไบต์ (k) เมกะไบต์ (M) กิกะไบต์ (G) หรือบล็อกขนาด 512 ไบต์ (b) โปรดทราบว่าตัวแก้ไขที่แสดงจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  5. ใช้ตัวดำเนินการเชิงตรรกะ (ตัวดำเนินการบูลีน) เพื่อรวมตัวกรองการค้นหาคุณสามารถใช้ตัวดำเนินการ -and , -or , -not เพื่อรวมค่าที่แตกต่างกันได้ คำค้นหาในคำขอเดียว

    find /travelphotos -type f -size +200k -not -iname "*2015*"

    • คำสั่งนี้จะค้นหาไฟล์ในโฟลเดอร์ Travelphotos ที่มีขนาดใหญ่กว่า 200 kB และไม่มีหมายเลข 2015 ในชื่อ

ไม่ต้องสงสัยเลยว่าเมื่อทำงานกับ Linux บางครั้งก็มีความจำเป็น ค้นหาไฟล์มีลักษณะบางอย่าง ลักษณะเหล่านี้อาจเป็นขนาดหรือประเภทของไฟล์ สิทธิ์การเข้าถึง และอื่นๆ


ความพร้อมใช้งานของคำสั่งใน Linux หาช่วยในการรับมือได้มาก กำลังค้นหาไฟล์ตามเกณฑ์ต่างๆ


วันนี้เราจะมาดูกัน ค้นหาไฟล์ใน Linuxและให้ตัวเลือกคำสั่งหลัก หาที่คุณสามารถนำไปใช้ในการทำงานของคุณได้

รูปแบบคำสั่ง หา:

หาเส้นทาง-ตัวเลือก

ที่ไหน เส้นทาง- นี่คือไดเร็กทอรีที่จะค้นหา ค่าต่อไปนี้สามารถระบุเป็นเส้นทางได้:

. - ค้นหาในไดเรกทอรีปัจจุบัน

/ - ค้นหาจากไดเรกทอรีราก

~ - ค้นหาในโฮมไดเร็กตอรี่

สำหรับตัวเลือกต่างๆ มีรายการที่ใหญ่กว่ามากซึ่งคุณต้องอ่านอย่างละเอียด (ซึ่งจะช่วยได้มากในอนาคต!) ดังนั้น, ตัวเลือกคำสั่งค้นหาพื้นฐาน:

-ชื่อ- ค้นหาไฟล์ตามชื่อโดยใช้เทมเพลตที่ให้ไว้

-ผู้ใช้- ค้นหาไฟล์ที่เป็นของผู้ใช้ที่ระบุ

-กลุ่ม- ค้นหาไฟล์ที่อยู่ในกลุ่มที่ระบุ

-ดัดผม- ค้นหาไฟล์ด้วยโหมดการเข้าถึงที่ระบุ

-พิมพ์- ค้นหาไฟล์ประเภทเฉพาะ นอกจากนี้ยังมีหลายประเภท:

  • b - ไฟล์บล็อกพิเศษ
  • d - ไดเร็กทอรี;
  • c - ไฟล์สัญลักษณ์พิเศษ
  • f - ไฟล์ปกติ;
  • ล. - ลิงก์สัญลักษณ์
  • p - ชื่อไปป์;
  • ส - ซ็อกเก็ต
-ขนาด- ค้นหาไฟล์ที่มีขนาด n หน่วย

-mtime -n +n- ค้นหาไฟล์ที่เนื้อหามีการเปลี่ยนแปลงน้อยกว่า (-) หรือมากกว่า (+) วันที่ผ่านมา

มาดูกันบ้างครับ ตัวอย่างการใช้คำสั่ง หา :

ตัวเลือกที่ใช้บ่อยที่สุดคือตัวเลือก -ชื่อซึ่งค้นหาไฟล์ตามชื่อ

ตัวอย่างที่มีตัวเลือก -name :

$ ค้นหา /mnt/usb -name "*.mp3" -print

จะค้นหาไฟล์ทั้งหมด (ระบุด้วยเครื่องหมาย *) ด้วยนามสกุล .mp3 บนอุปกรณ์ USB ที่ติดตั้งในไดเร็กทอรี /mnt/usb

$ ค้นหา ~ -name "test*" -print

จะแสดงรายการไฟล์ในโฮมไดเร็กตอรี่ที่เริ่มต้นด้วยการทดสอบ

หากคุณต้องการค้นหาไฟล์ที่ขึ้นต้นด้วยตัวอักษรบางตัว (เช่นจาก a ถึง j) จะสะดวกในการใช้งาน การแสดงออกปกติซึ่งสะดวกต่อการใช้งานอย่างยิ่ง:

$ ค้นหา / -name "*" -print

คำสั่งดังกล่าวจะค้นหาไฟล์ทั้งหมดในระบบที่ขึ้นต้นด้วยตัวอักษร a ถึง j

ค้นหาไฟล์ด้วยโหมดการเข้าถึงเฉพาะ

หากคุณต้องการค้นหาไฟล์ที่มีโหมดการเข้าถึงบางโหมด ตัวเลือกนี้จะช่วยคุณได้ -ดัดผมซึ่งจะช่วยในเรื่องนี้ได้อย่างง่ายดาย

ตัวอย่างเช่น ลองค้นหาไฟล์ด้วยโหมดการเข้าถึง 775 (เจ้าของและกลุ่มมีสิทธิ์เต็มที่ และผู้ใช้รายอื่นมีข้อ จำกัด ในการเขียน) ที่อยู่ในไดเร็กทอรีปัจจุบัน:

$ หา . -ดัดผม 775 -พิมพ์

กำลังค้นหาโดยใช้ หาด้วยตัวเลือก -perm คุณสามารถใช้วิธีอื่น - คุณสามารถใส่ยัติภังค์ไว้หน้าค่าโหมด จากนั้นมันจะค้นหาไฟล์ที่ตั้งค่าบิตสิทธิ์ที่ระบุทั้งหมดไว้ นอกจากนี้ บิตที่เหลือจะถูกละเว้นในกรณีนี้

ตัวอย่างเช่น เรามาค้นหาไฟล์ที่ผู้ใช้กลุ่มสามารถเข้าถึงได้ เข้าถึงได้เต็มรูปแบบ:

$ หา . -ดัดผม -070 -พิมพ์

แทนที่จะใช้ยัติภังค์ คุณสามารถใช้เครื่องหมายบวกได้ ในกรณีนี้ มันจะค้นหาไฟล์ที่มีชุดบิตสิทธิ์ที่ระบุอย่างน้อยหนึ่งรายการ บิตที่เหลือจะถูกละเว้น

ค้นหาไฟล์ของผู้ใช้หรือกลุ่มเฉพาะ

การค้นหาไฟล์ของผู้ใช้เฉพาะนั้นทำได้ง่ายมาก หากต้องการทำสิ่งนี้ เพียงรันคำสั่ง:

$ ค้นหา / - ​​ผู้ดูแลระบบผู้ใช้ - พิมพ์

คำสั่งดังกล่าวจะผลิต ค้นหาไฟล์ในระบบที่เป็นของผู้ใช้ผู้ดูแลระบบ

ในการค้นหาไฟล์ที่เป็นของกลุ่มเฉพาะ (เช่น ผู้จัดการ) ให้รันคำสั่ง:

$ find / -ผู้จัดการกลุ่ม -print

หากต้องการค้นหาไฟล์ของผู้ใช้หรือกลุ่มที่ไม่มีอยู่ คุณสามารถใช้ตัวเลือกนี้ได้ -นูเซอร์และ -ไม่มีกลุ่ม:

$ ค้นหา / -nouser -print

$ ค้นหา / -nogroup -print

ค้นหาไฟล์ประเภทเฉพาะ

หนึ่งในคุณสมบัติที่สะดวกสบายของคำสั่ง หาคือความสามารถในการค้นหาไฟล์ประเภทเฉพาะ พิจารณาตัวเลือกในการใช้ตัวเลือกนี้ -พิมพ์:

ค้นหาลิงก์สัญลักษณ์ในไดเร็กทอรี /etc:

$ ค้นหา /etc -type l -print

แสดงรายการไดเร็กทอรีที่มีอยู่ในไดเร็กทอรี /mnt/raid

$ ค้นหา /mnt/raid -type d -print

ค้นหาไฟล์ที่มีขนาดเฉพาะ

ตัวเลือก -ขนาดช่วยให้คุณค้นหาไฟล์ที่มีขนาดที่แน่นอนและมีลักษณะดังต่อไปนี้เมื่อดำเนินการ:

$ หา . -ขนาด 2000k -พิมพ์

คำสั่งดังกล่าวจะค้นหาและแสดงไฟล์ขนาด 2 เมกะไบต์ที่อยู่ในไดเร็กทอรีปัจจุบัน ตัวอย่างเช่น หากคุณต้องการค้นหาไฟล์ที่มีขนาดเล็กกว่า 500 กิโลไบต์ คำสั่งจะมีลักษณะดังนี้:

$ หา . -ขนาด -500k -พิมพ์

หากคุณต้องการค้นหาไฟล์ที่มีขนาดใหญ่กว่า 600 เมกะไบต์ ให้ใช้คำสั่ง:

$ ค้นหา / -ขนาด +600M -พิมพ์

การค้นหาไฟล์โดยใช้ตัวเลือก -mtime

ตัวเลือก -mtimeจะช่วยให้คุณสามารถค้นหาไฟล์ที่มีการเปลี่ยนแปลงในช่วงเวลาหนึ่งได้

ตัวอย่างเช่น เราต้องเผชิญกับภารกิจในการค้นหาไฟล์ที่อยู่ในไดเร็กทอรี /mnt/raid/upload ที่มีการเปลี่ยนแปลงในช่วง 5 วันที่ผ่านมา ทีมงานจะช่วยเราในเรื่องนี้:

$ ค้นหา /mnt/raid/upload -mtime -5 -print

หากเราต้องการสิ่งที่ตรงกันข้าม เช่น ในการค้นหาไฟล์ที่ไม่มีการเปลี่ยนแปลงเป็นเวลาหนึ่งสัปดาห์ ให้ใช้คำสั่ง:

$ ค้นหา /mnt/raid/upload -7 -print

ทีม หาเป็นอย่างยิ่ง เครื่องมือที่สะดวกสำหรับ ค้นหาไฟล์และยังสามารถใช้สำหรับ ค้นหาไฟล์บนดิสก์ NFS (network ระบบไฟล์) แต่ในกรณีนี้ จำเป็นต้องคำนึงว่าการค้นหาบางอย่างบน NFS จะใช้เวลานานกว่าบนดิสก์ในเครื่องมาก

ในบทความนี้ เราพิจารณาเฉพาะตัวเลือกพื้นฐานของคำสั่ง find ที่จะช่วยคุณในการทำงาน ใช้สิ่งที่สะดวกและไม่ต้องกังวลเรื่องมโนสาเร่!

ในขณะที่ทำงานอยู่ก็ตาม ระบบปฏิบัติการบางครั้งจำเป็นต้องใช้เครื่องมือเพื่อค้นหาไฟล์ที่ต้องการอย่างรวดเร็ว สิ่งนี้เกี่ยวข้องกับ Linux ด้วย ดังนั้นทั้งหมดจะกล่าวถึงด้านล่าง วิธีที่เป็นไปได้ค้นหาไฟล์ในระบบปฏิบัติการนี้ จะถูกนำเสนอเป็นเครื่องมือ ตัวจัดการไฟล์และคำสั่งที่ใช้ใน "เทอร์มินัล".

หากคุณต้องการระบุพารามิเตอร์การค้นหาจำนวนมากเพื่อค้นหา ไฟล์ที่ต้องการจากนั้นคำสั่ง หาไม่สามารถถูกแทนที่ได้ ก่อนที่จะพิจารณารูปแบบต่างๆ ทั้งหมด ควรพิจารณาไวยากรณ์และตัวเลือกต่างๆ ก่อน มีไวยากรณ์ดังต่อไปนี้:

ค้นหาเส้นทาง

ที่ไหน เส้นทาง- นี่คือไดเร็กทอรีที่จะทำการค้นหา มีสามตัวเลือกหลักสำหรับการระบุเส้นทาง:

  • / - ค้นหาในรูทและไดเร็กทอรีที่อยู่ติดกัน
  • ~ - ค้นหาตามโฮมไดเร็กตอรี่;
  • ./ — ค้นหาในไดเร็กทอรีที่ผู้ใช้อยู่ในปัจจุบัน

คุณยังสามารถระบุเส้นทางโดยตรงไปยังไดเร็กทอรีซึ่งเป็นที่ตั้งของไฟล์นั้นได้

ตัวเลือก หามีมากมายและต้องขอบคุณพวกเขาที่คุณสามารถดำเนินการตั้งค่าการค้นหาที่ยืดหยุ่นได้โดยการตั้งค่าตัวแปรที่จำเป็น:

  • -ชื่อ- ทำการค้นหาโดยใช้ชื่อขององค์ประกอบที่คุณกำลังมองหาเป็นพื้นฐาน
  • -ผู้ใช้- ค้นหาไฟล์ที่เกี่ยวข้องกับผู้ใช้รายใดรายหนึ่ง
  • -กลุ่ม- ค้นหากลุ่มผู้ใช้เฉพาะ
  • -ดัดผม- แสดงไฟล์ด้วยโหมดการเข้าถึงที่ระบุ
  • -ขนาด- ค้นหาตามขนาดของวัตถุ
  • -mtime +n -n- ค้นหาไฟล์ที่มีการเปลี่ยนแปลงมากกว่า ( +น) หรือน้อยกว่า ( -n) วันก่อน;
  • -พิมพ์- ค้นหาไฟล์ประเภทเฉพาะ

นอกจากนี้ยังมีองค์ประกอบหลายประเภทที่คุณกำลังมองหา นี่คือรายการของพวกเขา:

  • - ปิดกั้น;
  • - สามัญ;
  • พี- ชื่อไปป์;
  • - แคตตาล็อก;
  • - ลิงค์;
  • - ซ็อกเก็ต;
  • - สัญลักษณ์

หลังจากการวิเคราะห์รายละเอียดของไวยากรณ์คำสั่งและตัวเลือกแล้ว หาคุณสามารถไปที่ตัวอย่างประกอบได้โดยตรง เนื่องจากมีตัวเลือกมากมายสำหรับการใช้คำสั่ง จึงไม่ได้ให้ตัวอย่างสำหรับตัวแปรทั้งหมด แต่สำหรับตัวแปรที่ใช้บ่อยที่สุดเท่านั้น

วิธีที่ 1: ค้นหาตามชื่อ (-ตัวเลือกชื่อ)

ส่วนใหญ่ผู้ใช้จะใช้ตัวเลือกเพื่อค้นหาระบบ -ชื่อนั่นคือจุดที่เราจะเริ่มต้น ลองดูตัวอย่างบางส่วน

ค้นหาตามส่วนขยาย

สมมติว่าคุณต้องค้นหาไฟล์บนระบบที่มีนามสกุล ".xlsx"ซึ่งอยู่ในไดเร็กทอรี "ดรอปบ็อกซ์"- ในการทำเช่นนี้คุณต้องใช้คำสั่งต่อไปนี้:

ค้นหา /home/user/Dropbox -name "*.xlsx" -print

จากไวยากรณ์เราสามารถพูดได้ว่าการค้นหานั้นดำเนินการในไดเร็กทอรี "ดรอปบ็อกซ์" ("/home/user/Dropbox") และวัตถุที่ต้องการจะต้องมีนามสกุล ".xlsx"- เครื่องหมายดอกจันระบุว่าจะทำการค้นหาไฟล์ทั้งหมดของส่วนขยายนี้โดยไม่คำนึงถึงชื่อ "-พิมพ์"แสดงว่าผลการค้นหาจะปรากฏขึ้น

ค้นหาตามชื่อไฟล์

ตัวอย่างเช่น คุณต้องการค้นหาในไดเร็กทอรี "/บ้าน"ไฟล์ที่มีชื่อ "ก้อน"แต่ไม่ทราบนามสกุล ในกรณีนี้ คุณต้องดำเนินการดังต่อไปนี้:

ค้นหา ~ -name "lumpics*" -print

อย่างที่คุณเห็นสัญลักษณ์ที่ใช้ในที่นี้ก็คือ «~» ซึ่งหมายความว่าการค้นหาจะเกิดขึ้นในโฮมไดเร็กตอรี่ หลังจากตัวเลือก "-ชื่อ"ระบุชื่อของไฟล์ที่ค้นหา ( "ก้อน*"- เครื่องหมายดอกจันต่อท้ายหมายความว่าการค้นหาจะดำเนินการตามชื่อเท่านั้นโดยไม่คำนึงถึงส่วนขยาย

ค้นหาด้วยอักษรตัวแรกของชื่อ

หากคุณจำเฉพาะตัวอักษรตัวแรกของชื่อไฟล์ก็จะมีไวยากรณ์คำสั่งพิเศษที่จะช่วยคุณค้นหา ตัวอย่างเช่น คุณต้องการค้นหาไฟล์ที่ขึ้นต้นด้วยตัวอักษรจาก "ก"ถึง "ล"และคุณไม่รู้ว่ามันอยู่ในไดเร็กทอรีใด จากนั้นคุณจะต้องรันคำสั่งต่อไปนี้:

ค้นหา / -name "*" -print

เมื่อพิจารณาจากสัญลักษณ์ "/" ที่มาทันทีหลังจากคำสั่งหลัก การค้นหาจะดำเนินการโดยเริ่มจากไดเร็กทอรีรากนั่นคือทั่วทั้งระบบ ต่อไปส่วนหนึ่ง «*» หมายความว่าคำที่ค้นหาจะขึ้นต้นด้วยตัวอักษรบางตัว ในกรณีของเราจาก "ก"ถึง "ล".

โดยวิธีการถ้าคุณรู้นามสกุลไฟล์แล้วหลังจากสัญลักษณ์ «*» คุณสามารถระบุได้ ตัวอย่างเช่น คุณต้องค้นหาไฟล์เดียวกัน แต่คุณรู้ว่าไฟล์นั้นมีนามสกุล ".odt"- จากนั้นคุณสามารถใช้คำสั่งนี้:

ค้นหา / -name "*.odt" -print

วิธีที่ 2: ค้นหาตามโหมดการเข้าถึง (ตัวเลือก -perm)

บางครั้งคุณจำเป็นต้องค้นหาวัตถุที่คุณไม่ทราบชื่อ แต่คุณรู้ว่าวัตถุนั้นมีโหมดการเข้าถึงแบบใด จากนั้นคุณจะต้องใช้ตัวเลือก "-ดัดผม".

มันค่อนข้างใช้งานง่าย คุณเพียงแค่ต้องระบุตำแหน่งการค้นหาและโหมดการเข้าถึง นี่คือตัวอย่างของคำสั่งดังกล่าว:

ค้นหา ~ -perm 775 -print

นั่นคือการค้นหาจะดำเนินการในส่วนหน้าแรกและวัตถุที่กำลังค้นหาจะสามารถเข้าถึงได้ 775 - คุณยังสามารถเขียนสัญลักษณ์ “-” หน้าตัวเลขนี้ได้อีกด้วย จากนั้นอ็อบเจ็กต์ที่พบจะมีบิตอนุญาตตั้งแต่ศูนย์ถึงค่าที่ระบุ

วิธีที่ 3: ค้นหาตามผู้ใช้หรือกลุ่ม (ตัวเลือก -ผู้ใช้ และ -กลุ่ม)

ทุกระบบปฏิบัติการมีผู้ใช้และกลุ่ม หากคุณต้องการค้นหาวัตถุที่อยู่ในหมวดหมู่เหล่านี้ คุณสามารถใช้ตัวเลือกนี้ได้ "-ผู้ใช้"หรือ "-กลุ่ม"ตามลำดับ

ค้นหาไฟล์ด้วยชื่อผู้ใช้

ตัวอย่างเช่น คุณต้องค้นหาในไดเร็กทอรี "ดรอปบ็อกซ์"ไฟล์ "โคมไฟ"แต่คุณไม่รู้ว่ามันเรียกว่าอะไร คุณแค่รู้ว่ามันเป็นของผู้ใช้ "ผู้ใช้"- จากนั้นคุณจะต้องรันคำสั่งต่อไปนี้:

ค้นหา /home/user/Dropbox -user user -print

ในคำสั่งนี้ คุณระบุไดเร็กทอรีที่ต้องการ ( /home/user/Dropbox) ระบุว่าคุณต้องค้นหาไฟล์ที่เป็นของผู้ใช้ ( -ผู้ใช้) และระบุว่าไฟล์นี้เป็นของผู้ใช้รายใด ( ผู้ใช้).

ค้นหาไฟล์ตามชื่อกลุ่ม

การค้นหาไฟล์ที่เป็นของกลุ่มใดกลุ่มหนึ่งนั้นง่ายพอๆ กัน คุณเพียงแค่ต้องเปลี่ยนตัวเลือกนี้ "-ผู้ใช้"เป็นตัวเลือก "-กลุ่ม"และระบุชื่อกลุ่มนี้:

ค้นหา / -groupe แขก -print

นั่นคือคุณระบุว่าต้องการค้นหาไฟล์ในระบบที่เป็นของกลุ่ม "แขก"- การค้นหาจะเกิดขึ้นทั่วทั้งระบบ โดยมีสัญลักษณ์ระบุ «/» .

วิธีที่ 4: ค้นหาไฟล์ตามประเภทของไฟล์ (ตัวเลือกประเภท)

การค้นหาองค์ประกอบบางประเภทใน Linux นั้นค่อนข้างง่าย คุณเพียงแค่ต้องระบุตัวเลือกที่เหมาะสม ( -พิมพ์) และกำหนดประเภท ในตอนต้นของบทความ มีรายการการกำหนดประเภททั้งหมดที่สามารถใช้ในการค้นหาได้

เช่น คุณต้องการค้นหาไฟล์บล็อกทั้งหมดในโฮมไดเร็กตอรี่ของคุณ ในกรณีนี้คำสั่งของคุณจะมีลักษณะดังนี้:

ค้นหา ~ -type b -print

ดังนั้น คุณระบุว่าคุณกำลังค้นหาตามประเภทไฟล์ตามที่เห็นได้จากตัวเลือก "-พิมพ์"แล้วกำหนดประเภทของมันโดยการใส่สัญลักษณ์ไฟล์บล็อก - "ข".

ในทำนองเดียวกัน คุณสามารถแสดงไดเร็กทอรีทั้งหมดในไดเร็กทอรีที่ต้องการได้โดยการป้อนสัญลักษณ์ในคำสั่ง "ด":

ค้นหา /home/user -type d -print

วิธีที่ 5: ค้นหาไฟล์ตามขนาด (ตัวเลือกขนาด)

ถ้าสิ่งที่คุณรู้เกี่ยวกับไฟล์คือขนาดของไฟล์ แค่นั้นก็อาจจะเพียงพอที่จะค้นหามันได้ ตัวอย่างเช่น คุณต้องการค้นหาไฟล์ขนาด 120 MB ในไดเร็กทอรีบางไดเร็กทอรี โดยทำดังนี้:

ค้นหา /home/user/Dropbox -size 120M -print

อย่างที่คุณเห็น พบไฟล์ที่เราต้องการแล้ว แต่ถ้าคุณไม่ทราบว่าอยู่ในไดเร็กทอรีใด คุณสามารถค้นหาทั้งระบบได้โดยการระบุไดเร็กทอรีรากที่จุดเริ่มต้นของคำสั่ง:

ค้นหา / -ขนาด 120M -พิมพ์

หากคุณทราบขนาดไฟล์โดยประมาณแสดงว่ามีคำสั่งพิเศษสำหรับในกรณีนี้ คุณต้องลงทะเบียนใน "เทอร์มินัล"เช่นเดียวกันก็แค่ใส่เครื่องหมายก่อนระบุขนาดไฟล์ «-» (หากต้องการค้นหาไฟล์ที่มีขนาดเล็กกว่าขนาดที่กำหนด) หรือ «+» (หากขนาดของไฟล์ที่คุณกำลังมองหามีขนาดใหญ่กว่าขนาดที่ระบุ) นี่คือตัวอย่างของคำสั่งดังกล่าว:

ค้นหา /home/user/Dropbox +100M -print

วิธีที่ 6: ค้นหาไฟล์ตามวันที่แก้ไข (ตัวเลือก -mtime)

มีบางครั้งที่สะดวกที่สุดในการค้นหาไฟล์ตามวันที่แก้ไข บน Linux ทำได้โดยใช้ตัวเลือก "-mtime"- มันค่อนข้างใช้งานง่าย ลองดูทุกอย่างโดยใช้ตัวอย่างกัน

สมมติว่าอยู่ในโฟลเดอร์ "รูปภาพ"เราจำเป็นต้องค้นหาวัตถุที่มีการเปลี่ยนแปลงในช่วง 15 วันที่ผ่านมา นี่คือสิ่งที่คุณต้องเขียน "เทอร์มินัล":

ค้นหา /home/user/Images -mtime -15 -print

อย่างที่คุณเห็นตัวเลือกนี้ไม่เพียงแสดงเฉพาะไฟล์ที่มีการเปลี่ยนแปลงในช่วงเวลาที่กำหนด แต่ยังแสดงโฟลเดอร์ด้วย เธอยังทำงานอยู่ที่ ด้านหลัง- คุณสามารถค้นหาวัตถุที่มีการเปลี่ยนแปลงหลังจากระยะเวลาที่กำหนด ในการดำเนินการนี้ คุณจะต้องป้อนเครื่องหมายก่อนค่าดิจิทัล «+» :

ค้นหา /home/user/Images -mtime +10 -print

กุย

อินเทอร์เฟซแบบกราฟิกทำให้ชีวิตง่ายขึ้นมากสำหรับผู้เริ่มต้นที่เพิ่งติดตั้ง การกระจายลินุกซ์. วิธีการนี้การค้นหาจะคล้ายกับการค้นหาใน Windows มาก แม้ว่าจะไม่สามารถให้ประโยชน์ทั้งหมดที่มีให้ก็ตาม "เทอร์มินัล"- แต่สิ่งแรกก่อน มาดูวิธีการค้นหาไฟล์ใน Linux โดยใช้ กุยระบบ

วิธีที่ 1: ค้นหาผ่านเมนูระบบ

ตอนนี้เรามาดูวิธีค้นหาไฟล์ผ่านเมนู ระบบลินุกซ์- การดำเนินการจะดำเนินการในการกระจาย Ubuntu 16.04 LTS แต่คำแนะนำเป็นเรื่องปกติสำหรับทุกคน