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

นี่คือหน้าต้อนรับเริ่มต้นที่ใช้ทดสอบการทำงานที่ถูกต้องของเซิร์ฟเวอร์ Apache2 หลังการติดตั้งบนระบบ Ubuntu มันขึ้นอยู่กับหน้าที่เทียบเท่ากับ Debian ซึ่งเป็นที่มาของแพ็คเกจ Ubuntu Apache หากคุณสามารถอ่านหน้านี้ได้ แสดงว่าเซิร์ฟเวอร์ Apache HTTP ที่ติดตั้งที่ไซต์นี้ทำงานได้อย่างถูกต้อง คุณควร แทนที่ไฟล์นี้(อยู่ที่ /var/www/html/index.html) ก่อนที่จะดำเนินการเซิร์ฟเวอร์ HTTP ของคุณต่อไป

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

ภาพรวมการกำหนดค่า

การกำหนดค่าเริ่มต้น Apache2 ของ Ubuntu แตกต่างจากการกำหนดค่าเริ่มต้นแบบอัปสตรีมและแบ่งออกเป็นหลายไฟล์ที่ปรับให้เหมาะสมสำหรับการโต้ตอบกับเครื่องมือของ Ubuntu ระบบการกำหนดค่าคือ เอกสารฉบับสมบูรณ์ใน /usr/share/doc/apache2/README.Debian.gz. อ้างอิงถึงสิ่งนี้สำหรับเอกสารฉบับเต็ม เอกสารสำหรับ เว็บเซิร์ฟเวอร์สามารถพบได้โดยการเข้าถึงคู่มือหากติดตั้งแพ็คเกจ apache2-doc บนเซิร์ฟเวอร์นี้

โครงร่างการกำหนดค่าสำหรับการติดตั้งเว็บเซิร์ฟเวอร์ Apache2 บนระบบ Ubuntu เป็นดังนี้:

/etc/apache2/ |-- apache2.conf | `-- ports.conf |-- เปิดใช้งาน mods | |-- *.โหลด | `-- *.conf |-- เปิดใช้งาน conf | `-- *.conf |-- เปิดใช้งานไซต์ | `-- *.คอนฟ

  • apache2.conf เป็นไฟล์กำหนดค่าหลัก มันรวบรวมชิ้นส่วนเข้าด้วยกันโดยรวมไฟล์การกำหนดค่าที่เหลือทั้งหมดเมื่อเริ่มต้นเว็บเซิร์ฟเวอร์
  • ports.conf จะรวมอยู่ในไฟล์การกำหนดค่าหลักเสมอ ใช้เพื่อกำหนดพอร์ตการฟังสำหรับการเชื่อมต่อขาเข้า และไฟล์นี้สามารถปรับแต่งได้ตลอดเวลา
  • ไฟล์การกำหนดค่าในไดเร็กทอรี mods-enabled/ , conf-enabled/ และ sites-enabled/ มีตัวอย่างการกำหนดค่าเฉพาะซึ่งจัดการโมดูล ชิ้นส่วนการกำหนดค่าส่วนกลาง หรือการกำหนดค่าโฮสต์เสมือน ตามลำดับ
  • สิ่งเหล่านี้ถูกเปิดใช้งานโดยการเชื่อมโยงไฟล์การกำหนดค่าที่มีอยู่จาก *-available/ ที่เกี่ยวข้อง สิ่งเหล่านี้ควรได้รับการจัดการโดยใช้ตัวช่วยของเรา a2enmod, a2dismod, a2ensite, a2dissite และ a2enconf, a2disconf ดูหน้าคู่มือที่เกี่ยวข้องสำหรับข้อมูลโดยละเอียด
  • ไบนารีเรียกว่า apache2 เนื่องจากการใช้ตัวแปรสภาพแวดล้อม ในการกำหนดค่าเริ่มต้น apache2 จะต้องเริ่ม/หยุดด้วย /etc/init.d/apache2 หรือ apache2ctl การโทร /usr/bin/apache2 โดยตรงจะไม่ทำงานด้วยการกำหนดค่าเริ่มต้น

รากเอกสาร

ตามค่าเริ่มต้น Ubuntu ไม่อนุญาตให้เข้าถึงผ่านเว็บเบราว์เซอร์ ใดๆแยกไฟล์ออกจากไดเร็กทอรี /var/www , public_html (เมื่อเปิดใช้งาน) และ /usr/share (สำหรับเว็บแอปพลิเคชัน) หากเว็บไซต์ของคุณใช้รูทเอกสารเว็บที่อยู่ที่อื่น (เช่นใน /srv) คุณอาจต้องไวท์ลิสต์ไดเรกทอรีรูทเอกสารของคุณใน /etc/apache2/apache2.conf

รูทเอกสาร Ubuntu เริ่มต้นคือ /var/www/html คุณสามารถสร้างโฮสต์เสมือนของคุณเองได้ที่ /var/www สิ่งนี้แตกต่างจากรุ่นก่อนหน้าซึ่งให้ความปลอดภัยที่ดีกว่าตั้งแต่แกะกล่อง

การรายงานปัญหา

โปรดใช้เครื่องมือ ubuntu-bug เพื่อรายงานข้อบกพร่องในแพ็คเกจ Apache2 ด้วย Ubuntu อย่างไรก็ตาม โปรดตรวจสอบก่อนที่จะรายงานข้อผิดพลาดใหม่

โปรดรายงานข้อบกพร่องเฉพาะของโมดูล (เช่น PHP และอื่นๆ) ไปยังแพ็คเกจที่เกี่ยวข้อง ไม่ใช่ไปยังเว็บเซิร์ฟเวอร์เอง

ในขณะที่ทำงานกับระบบปฏิบัติการใด ๆ บางครั้งจำเป็นต้องใช้เครื่องมือในการ ค้นหาอย่างรวดเร็วนี่หรือไฟล์นั้น สิ่งนี้เกี่ยวข้องกับ 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 แต่คำแนะนำเป็นเรื่องปกติสำหรับทุกคน

บทความนี้ตัดตอนมาจากหนังสือ " Linux&Unix - การเขียนโปรแกรมใน Shell", เดวิด แทนสลีย์.

ฉันรีบแก้ไขเล็กน้อย หากคุณสังเกตเห็นข้อผิดพลาดใด ๆ โปรดเขียนในความคิดเห็น

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

บทนี้ครอบคลุมหัวข้อต่อไปนี้ที่เกี่ยวข้องกับการใช้คำสั่ง find:

ค้นหาตัวเลือกคำสั่ง

ตัวอย่างการใช้ตัวเลือกต่างๆ ของคำสั่ง find

ตัวอย่างการใช้ xargs และค้นหาคำสั่งร่วมกัน

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

หา path_name -ตัวเลือก

ที่ไหน path_name- นี่คือไดเร็กทอรีที่ใช้เริ่มการค้นหา อักขระ '.' ใช้เพื่อแสดงถึงไดเร็กทอรีปัจจุบัน อักขระ / คือไดเร็กทอรีราก และอักขระ "~" คืออักขระที่จัดเก็บไว้ในตัวแปร $บ้านไดเร็กทอรีเริ่มต้น ผู้ใช้ปัจจุบัน.

2.1. ค้นหาตัวเลือกคำสั่ง

มาดูคำอธิบายของตัวเลือกหลักของคำสั่ง find กันดีกว่า

ชื่อ ค้นหาไฟล์ที่มีชื่อตรงกับรูปแบบที่กำหนด

พิมพ์ เขียนชื่อเต็มของไฟล์ที่พบไปยังเอาต์พุตมาตรฐาน

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

Prune ใช้เพื่อป้องกันไม่ให้คำสั่ง find ทำการค้นหาแบบเรียกซ้ำในชื่อพาธที่พบแล้ว หากระบุอ็อพชัน -ความลึก อ็อพชัน -prune จะถูกละเว้น

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

ค้นหาไฟล์ที่อยู่ในกลุ่มที่กำหนด

เวลา -n +nค้นหาไฟล์ที่มีการแก้ไขเนื้อหาน้อยกว่า (-) หรือมากกว่า (+) nวันที่ผ่านมา; นอกจากนี้ยังมีตัวเลือก -atime และ -ctime ซึ่งช่วยให้คุณค้นหาไฟล์ตามวันที่อ่านครั้งล่าสุดและวันที่เปลี่ยนแปลงล่าสุดของแอตทริบิวต์ไฟล์

Nogroup ค้นหาไฟล์ที่อยู่ในกลุ่มที่ไม่มีอยู่ซึ่งกล่าวอีกนัยหนึ่งคือไม่มีรายการในไฟล์ /etc/groups

Nouser ค้นหาไฟล์ที่เป็นของผู้ใช้ที่ไม่มีอยู่จริง ซึ่งกล่าวอีกนัยหนึ่งคือไม่มีรายการในไฟล์ /etc/passwd

ใหม่กว่า ไฟล์ค้นหาไฟล์ที่สร้างขึ้นหลังจากไฟล์ที่ระบุ

พิมพ์ ค้นหาไฟล์ประเภทเฉพาะ ได้แก่ : - ไฟล์บล็อกพิเศษ - แคตตาล็อก; กับ- ไฟล์สัญลักษณ์พิเศษ พี- ชื่อไปป์; - ลิงค์สัญลักษณ์ - เบ้า; - ไฟล์ปกติ

ขนาด n ค้นหาไฟล์ที่มีขนาด nหน่วย; หน่วยการวัดต่อไปนี้เป็นไปได้: - ขนาดบล็อก 512 ไบต์ (การตั้งค่าเริ่มต้น) กับ- ไบต์; เค- กิโลไบต์ (1,024 ไบต์) - คำสองไบต์

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

F stype ค้นหาไฟล์ที่อยู่ในระบบไฟล์ประเภทเฉพาะ โดยปกติแล้วข้อมูลที่เกี่ยวข้องจะถูกจัดเก็บไว้ในไฟล์ /etc/fstabซึ่งมีข้อมูลเกี่ยวกับระบบไฟล์ที่ใช้ในเครื่องคอมพิวเตอร์

เมานต์ ค้นหาไฟล์ในระบบไฟล์ปัจจุบันเท่านั้น ตัวเลือกที่เทียบเท่ากันคือตัวเลือก -xdev -exec ดำเนินการคำสั่งล่าม เปลือกสำหรับไฟล์ที่ตรวจพบทั้งหมด คำสั่งที่ดำเนินการมีคำสั่งรูปแบบ ( ) ;

(สังเกตช่องว่างระหว่างอักขระ () และ 😉

ตกลง คล้ายกับ -exec แต่แสดงพร้อมท์ก่อนดำเนินการคำสั่ง

2.1.1. ตัวเลือก -ชื่อ

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

$ find ~ -name "*.txt" -print.txt

เพื่อค้นหาไฟล์ทั้งหมดที่มีนามสกุล .txtที่อยู่ในไดเร็กทอรีปัจจุบัน ให้ใช้คำสั่งต่อไปนี้:

$ ค้นหา -ชื่อ "*.txt" -พิมพ์

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

$ ค้นหา -ชื่อ "*" -พิมพ์

ค้นหาในแคตตาล็อก /ฯลฯไฟล์ที่มีชื่อขึ้นต้นด้วยอักขระ " เจ้าภาพ"คำสั่งอนุญาต

$ find /etc -name "hoat*" -print

ค้นหาไดเรกทอรีเริ่มต้นสำหรับไฟล์ทั้งหมดที่มีนามสกุล .txtเช่นเดียวกับไฟล์ที่ชื่อขึ้นต้นด้วยจุด คำสั่งจะสร้าง

$ ค้นหา ~ -name "*.txt" -print -o -name ".*" -print

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

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

$ ค้นหา / - ​​ชื่อ "*" - พิมพ์

ข้อมูลต่อไปนี้แสดงวิธีการค้นหาไฟล์ทั้งหมดที่ชื่อขึ้นต้นด้วยอักขระตัวพิมพ์เล็ก ตามด้วยตัวเลขสองตัวและนามสกุล .txt(ตัวอย่างเช่น, akh37.xt):

$ ค้นหา -ชื่อ » [a-x] [a-x] . txt" -พิมพ์

2.1.2. ตัวเลือก -ดัดผม

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

$ ค้นหา -ดัดผม 755 -พิมพ์

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

$ ค้นหา -ดัดผม -007 -พิมพ์

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

2.1.3. ตัวเลือก -พรุน

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

คำสั่งต่อไปนี้ค้นหาไดเร็กทอรีปัจจุบันโดยไม่ต้องเข้าไปในไดเร็กทอรีย่อย /ถัง:

$ ค้นหา -ชื่อ "bin" -prune -o -print

2.1.4. ตัวเลือก -ผู้ใช้ และ --nouser

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

$ find ~ -user เดฟ -print

ค้นหาแค็ตตาล็อก /ฯลฯไฟล์ที่เป็นของผู้ใช้ uucp, รันคำสั่งต่อไปนี้:

$ ค้นหา /etc -uaer uucp -print

ด้วยตัวเลือก -nouser ทำให้สามารถค้นหาไฟล์ที่เป็นของผู้ใช้ที่ไม่มีอยู่จริงได้ เมื่อใช้งาน จะมีการค้นหาไฟล์ที่เจ้าของไม่มีรายการในไฟล์ /etc/passwd. ไม่จำเป็นต้องระบุชื่อผู้ใช้เฉพาะ คำสั่ง find จะทำงานที่จำเป็นทั้งหมดเอง เพื่อค้นหาไฟล์ทั้งหมดที่เป็นของผู้ใช้ที่ไม่มีอยู่จริงและอยู่ในไดเร็กทอรี /บ้านให้ป้อนคำสั่งนี้:

$ ค้นหา /home -nouaer -print

2.1.5. ตัวเลือก -กลุ่ม และ -nogroup

ตัวเลือก -group และ -nogroup มีความคล้ายคลึงกับ -user-nouser/apps ของไฟล์ทั้งหมดที่เป็นของผู้ใช้ในกลุ่ม บัญชี:

$ ค้นหา /arra -group accta -print

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

$ ค้นหา / -nogroup -print

2.1.6. ตัวเลือก -mtime

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

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

$ ค้นหา / -mtime -5 -print

ด้านล่างนี้เป็นคำสั่งที่ใช้ค้นหาไดเร็กทอรี /var/admไฟล์ที่ได้รับการอัพเดตภายในสามวันที่ผ่านมา:

$ ค้นหา /var/adm -mtime +3 -print

2.1.7. - ตัวเลือกที่ใหม่กว่า

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

ใหม่กว่า old_file! - ใหม่กว่า new_file

เข้าสู่ระบบ ' ! ‘ เป็นตัวดำเนินการปฏิเสธเชิงตรรกะ หมายความว่า: ค้นหาไฟล์ที่ใหม่กว่า old_fileแต่เก่ากว่า new_file.

สมมติว่าเรามีไฟล์สองไฟล์ที่ได้รับการอัปเดตห่างกันเกินสองวันเล็กน้อย:

Rwxr-xr-x 1 รูท 92 เม.ย. 18 11:18 age.awk
-rwxrwxr-x 1 รูตรูต 1,054 20 เม.ย. 19:37 belts.awk

เพื่อค้นหาไฟล์ทั้งหมดที่ได้รับการอัพเดตในภายหลัง อายุ.awkแต่เร็วกว่านั้น เข็มขัด.awkให้รันคำสั่งต่อไปนี้ (การใช้ตัวเลือก -exec มีอธิบายไว้ด้านล่าง):

$ ค้นหา -ยุคใหม่.awk ! - ใหม่กว่า belts.awk -exec คือ -1 () ;
-rwxrwxr-x 1 รูท 62 เม.ย. 61 11:32 ./who.awk
-rwxrwxr-x 1 รูทรูท 49 เม.ย. 18 12:05 ./group.awk
-rw-r-r- 1 รูตรูต 201 เม.ย. 20 19:30 ./grade2.txt
-rwxrwxr-x 1 รูทรูท 1,054 20 เม.ย. 19:37 ./belts.awk

แต่ถ้าคุณต้องการค้นหาไฟล์ที่สร้างขึ้นภายในสองชั่วโมงที่ผ่านมา แต่คุณไม่มีไฟล์ที่สร้างขึ้นเมื่อสองชั่วโมงก่อนเพื่อเปรียบเทียบล่ะ สร้างไฟล์ดังกล่าว! คำสั่ง touch -t มีวัตถุประสงค์เพื่อจุดประสงค์นี้ ซึ่งจะสร้างไฟล์ที่มีการประทับเวลาที่กำหนดในรูปแบบ MMDChhmm (เดือน-วัน-ชั่วโมง-นาที) ตัวอย่างเช่น:

$ touch -t 05042140 dstamp
$ls -1 แสตมป์
-rw-r-r- 1 dave ผู้ดูแลระบบ 0 4 พฤษภาคม 21:40 dstamp

ผลลัพธ์จะเป็นไฟล์ที่มีวันที่สร้างคือ 4 พฤษภาคม เวลาสร้าง -21:40 น. (สมมุติว่า เวลาปัจจุบัน- 23:40 น.) ตอนนี้คุณสามารถใช้คำสั่ง find พร้อมกับตัวเลือก -newer เพื่อค้นหาไฟล์ทั้งหมดที่ได้รับการอัพเดตภายในสองชั่วโมงที่ผ่านมา:

$ ค้นหา -datamp ใหม่ -พิมพ์

2.1.8. ตัวเลือก -พิมพ์

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

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

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

$ ค้นหา ! -พิมพ์ d -พิมพ์

ด้านล่างนี้เป็นคำสั่งที่ออกแบบมาเพื่อค้นหาลิงก์สัญลักษณ์ทั้งหมดในไดเร็กทอรี /ฯลฯ.

$ find /etc -type 1 -print

2.1.9. ตัวเลือก -ขนาด

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

$ ค้นหา -aize -floOOk -พิมพ์

คำสั่งต่อไปนี้ค้นหาไดเร็กทอรี /home/apacheไฟล์ที่มีขนาด 100 ไบต์พอดี:

$ ค้นหา /home/apache -sixe 100s -print

คำสั่งต่อไปนี้ช่วยให้คุณค้นหาไฟล์ที่มีขนาดใหญ่กว่า 10 บล็อก (5120 ไบต์):

$ ค้นหา -ขนาด +10 -พิมพ์

2.1.10. ตัวเลือก ตัวเลือก -ความลึก

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

$ ค้นหา -ชื่อ "*" -พิมพ์ -o -ชื่อ ".*" -พิมพ์ -ความลึก

ผลงานของเธออาจมีลักษณะดังนี้:

./.Xdefaults ./.bash_logout ./.bash_profile ./.bashrc ./.bash_nistory ./file ./Dir/filel ./Dir/file2 ./Dir/file3 ./Dir/Subdir/file4 ./Dir/Subdir ./ผบ

2.1.11. ตัวเลือก -mount

ค้นหาไฟล์บนระบบไฟล์ปัจจุบันเท่านั้น ไม่รวมไฟล์อื่นๆ ที่ติดตั้ง ระบบไฟล์จัดเตรียมตัวเลือก -mount ให้กับคำสั่ง find ตัวอย่างต่อไปนี้จะค้นหาไฟล์ทั้งหมดที่มีนามสกุล .xcในพาร์ติชันดิสก์ปัจจุบัน:

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

2.1.12. ค้นหาไฟล์แล้วเก็บถาวรโดยใช้คำสั่ง cpio

คำสั่ง cpio ใช้เพื่อเขียนไฟล์และอ่านจากเทปเป็นหลัก บ่อยครั้งใช้ร่วมกับคำสั่ง find โดยรับรายการไฟล์จากคำสั่งนั้นผ่านไพพ์

ต่อไปนี้เป็นวิธีบันทึกเนื้อหาไดเร็กทอรีลงในเทป /ฯลฯ, /บ้านและ /แอพ:

$ซีดี/
$ ค้นหา ฯลฯ appa หน้าแรก - เชิงลึก - พิมพ์ | cpio -ov > dev/rmtO

ตัวเลือก -โอคำสั่ง cpio ระบุโหมดสำหรับการเขียนไฟล์ลงในเทป ตัวเลือก -v (รายละเอียด- โหมดวาจา) เป็นคำสั่งของคำสั่ง cpio เพื่อรายงานแต่ละไฟล์ที่กำลังประมวลผล

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

2.1.13. ตัวเลือก -exec และ -ok

สมมติว่าคุณพบ ไฟล์ที่จำเป็นและต้องการดำเนินการบางอย่างที่เกี่ยวข้องกับพวกเขา ในกรณีนี้ คุณจะต้องใช้ตัวเลือก -exec (บางระบบอนุญาตให้ใช้คำสั่ง ls หรือ ls -1 เท่านั้นที่จะดำเนินการด้วยตัวเลือก -exec) ผู้ใช้หลายคนใช้ตัวเลือก -exec เพื่อค้นหาไฟล์เก่าที่จะลบ ฉันแนะนำให้รัน ls แทน rm เพื่อให้แน่ใจว่าคำสั่ง find พบไฟล์ที่คุณต้องการลบ

หลังจากตัวเลือก -exec ให้ระบุคำสั่งที่จะดำเนินการ ตามด้วยเครื่องหมายปีกกา ช่องว่าง แบ็กสแลช และสุดท้ายคือเครื่องหมายอัฒภาค ลองดูตัวอย่าง:

$ ค้นหา -พิมพ์ f -exec Xa -1 () ;
-rwxr-xr-x 10 รูทล้อ 1222 4 ม.ค. 1993 ./sbin/C80
-rwxr-xr-x 10 ล้อรูต 1222 4 ม.ค. 1993 ./sbin/Normal
-rwxr-xr-x 10 ล้อรูต 1222 4 ม.ค. 1993 ./sbin/Rewid

นี่เป็นการค้นหาไฟล์ปกติ ซึ่งมีรายการแสดงบนหน้าจอโดยใช้คำสั่ง ls -1

เพื่อค้นหาไฟล์ที่ไม่ได้รับการอัพเดตในไดเร็กทอรี /บันทึกภายในห้าวันที่ผ่านมา และลบออก ให้รันคำสั่งต่อไปนี้:

$ ค้นหา /log" -พิมพ์ f -mtime +5 -exec rm () ;

คุณควรระมัดระวังในการย้ายหรือลบไฟล์ ใช้ตัวเลือก -ok ซึ่งช่วยให้คุณสามารถรันคำสั่ง mv และ rm ได้ โหมดปลอดภัย(ก่อนที่จะประมวลผลไฟล์ถัดไปจะมีการออกคำขอยืนยัน) ในตัวอย่างต่อไปนี้ คำสั่ง find ค้นหาไฟล์ที่มีนามสกุล .บันทึกและหากไฟล์ถูกสร้างขึ้นนานกว่าห้าวันที่แล้ว ไฟล์นั้นจะลบออก แต่ก่อนอื่นจะขอให้คุณยืนยันการดำเนินการนี้:

$ ค้นหา -ชื่อ "*.LOG" -mtime +5 -ok rm () ;
< rm … ./nets.LOG >? ที่

หากต้องการลบไฟล์ ให้ป้อน ที่และเพื่อป้องกันการกระทำนี้ - n.

2.1.14. ตัวอย่างเพิ่มเติมของการใช้คำสั่ง find

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

$ ค้นหา ~ - พิมพ์

ค้นหาไฟล์ทั้งหมดที่มีการตั้งค่าบิตไว้ ซูดคำสั่งต่อไปนี้อนุญาต:

$ ค้นหา -ประเภท f -perm +4000 -พิมพ์

หากต้องการดูรายการไฟล์ว่าง ให้ใช้คำสั่งนี้:

$ ค้นหา / -type f -size 0 -exec คือ -1 () ;

หนึ่งในระบบของฉันสร้างบันทึกการตรวจสอบระบบทุกวัน หมายเลขจะถูกเพิ่มลงในชื่อไฟล์บันทึก ซึ่งช่วยให้คุณระบุได้ทันทีว่าไฟล์ใดถูกสร้างขึ้นในภายหลังและไฟล์ใดถูกสร้างขึ้นก่อนหน้านี้ เช่น เวอร์ชันของไฟล์ ผู้ดูแลระบบ.logตามลำดับหมายเลข: ผู้ดูแลระบบ.log.001, ผู้ดูแลระบบ.log.002ฯลฯ ด้านล่างนี้เป็นคำสั่ง find ซึ่งจะลบไฟล์ทั้งหมด ผู้ดูแลระบบ.logสร้างมากกว่าเจ็ดวันที่แล้ว:

$ ค้นหา /logs -name 'admin.log.1 -atima +7 exec rm () ;

2.2. ทีม xargs

ด้วยอ็อพชัน -exec คำสั่ง find จะส่งไฟล์ที่พบทั้งหมดไปยังคำสั่งที่ระบุ ซึ่งจะถูกประมวลผลในครั้งเดียว ขออภัย ในบางระบบความยาวของบรรทัดคำสั่งนั้นมีจำกัด ดังนั้นเมื่อประมวลผลไฟล์จำนวนมาก คุณอาจได้รับข้อความแสดงข้อผิดพลาดที่มักจะอ่านว่า: “ข้อโต้แย้งมากเกินไป”(มีข้อโต้แย้งมากเกินไป) หรือ “เถียงกันยาวเกินไป”(รายการข้อโต้แย้งมากเกินไป) ในสถานการณ์นี้ คำสั่ง xargs จะมาเพื่อช่วยเหลือ โดยจะประมวลผลไฟล์ที่ได้รับจากคำสั่ง find เป็นกลุ่ม แทนที่จะประมวลผลทั้งหมดในคราวเดียว

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

$ find / -type f -print ฉัน xarge.file
/etc/protocols: ข้อความภาษาอังกฤษ /etc/securetty: ข้อความ ASCII

ด้านล่างนี้เป็นตัวอย่างที่สาธิตการค้นหาไฟล์ดัมพ์ที่มีชื่อที่คำสั่ง echo ใส่ลงในไฟล์ /tmp/core.log.

$ find / -name core -print | xarge echo > /tmp/core.log

ในตัวอย่างต่อไปนี้ ในไดเร็กทอรี /apps/auditค้นหาไฟล์ทั้งหมดที่ผู้ใช้รายอื่นมีสิทธิ์เข้าถึงแบบเต็ม คำสั่ง chmodลบการอนุญาตการเขียนสำหรับพวกเขา:

$ ค้นหา /appe/audit -perm -7 -print | xarge chmod o-w

การปัดเศษรายการของเราเป็นตัวอย่างที่คำสั่ง grep ค้นหาไฟล์ที่มีคำว่า " อุปกรณ์«:

$ ค้นหา / - ​​พิมพ์ f - พิมพ์ | xarge grep "อุปกรณ์"

2.3. บทสรุป

คำสั่ง find เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการค้นหาไฟล์ต่างๆ โดยใช้เกณฑ์ที่หลากหลาย ต้องขอบคุณตัวเลือก -exec เช่นเดียวกับคำสั่ง xargs ไฟล์ที่พบสามารถประมวลผลได้ด้วยคำสั่งระบบเกือบทุกคำสั่ง

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

วันนี้เราจะพูดถึงการใช้คำสั่ง find - เชื่อฉันเถอะว่ามันคุ้มค่าที่จะเรียนรู้วิธีทำงานกับเครื่องมือที่ทรงพลังและสะดวกสบายนี้

วิธีใช้คำสั่ง find

พูดง่ายๆ ก็คือไวยากรณ์พื้นฐานสำหรับคำสั่ง find จะเป็นดังนี้:

ค้นหาชื่อไฟล์พารามิเตอร์ /path

มาทำความเข้าใจความสามารถของทีมงานกัน

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

พารามิเตอร์แรกคือเส้นทาง หากคุณไม่รู้ว่าไฟล์อาจซ่อนอยู่ที่ไหน ให้แทนที่พาธด้วย / - ก็พอแล้ว อย่างไรก็ตาม การค้นหาทั้งดิสก์อาจใช้เวลานาน และหากคุณทราบว่าไฟล์นั้นอาจอยู่ที่ใด ให้ระบุโฟลเดอร์ที่จะเริ่มค้นหา (เช่น ~ เพื่อค้นหาในโฟลเดอร์หลักของผู้ใช้)

ตอนนี้เรามาดูพารามิเตอร์การค้นหากันดีกว่า มีสองตัวเลือกในการค้นหาไฟล์ตามชื่อ:

  • ชื่อ - ค้นหาชื่อไฟล์ที่คำนึงถึงขนาดตัวพิมพ์
  • iname - ค้นหาชื่อไฟล์ที่ไม่คำนึงถึงขนาดตัวพิมพ์

ต้องจำไว้ว่าใน Linux กรณีของชื่อไฟล์มีความสำคัญและหากคุณต้องการค้นหาไฟล์เช่น Ubuntu.txt คำสั่งต่อไปนี้จะไม่ให้ผลลัพธ์ใด ๆ:

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

แต่คุณสามารถใช้คำสั่ง iname และทำการค้นหาโดยคำนึงถึงขนาดตัวพิมพ์:

ค้นหา / -iname ubuntu.txt

ค้นหาตามประเภท

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

  • f - ไฟล์ปกติ
  • d - ไดเร็กทอรี
  • ล. - ลิงก์สัญลักษณ์
  • ค - อุปกรณ์อักขระ
  • b - อุปกรณ์บล็อก

ตัวอย่างเช่น หากต้องการค้นหาไดเร็กทอรีทั้งหมดภายในโฮมไดเร็กทอรีของผู้ใช้ปัจจุบันที่ขึ้นต้นด้วย "config" ให้รันคำสั่งต่อไปนี้:

ค้นหา ~ -type d -name config*

การส่งออกผลลัพธ์การค้นหาไปยังไฟล์

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

ค้นหา /etc -type f -name “*.conf” > conf_search

ค้นหาไฟล์ตามขนาด

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

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

สามารถใช้ตัวย่อขนาดต่อไปนี้:

  • ค - ไบต์
  • k - กิโลไบต์
  • M - เมกะไบต์
  • G - กิกะไบต์
  • b - บล็อก 512 ไบต์

นี่เป็นเพียงไม่กี่วิธีในการใช้คำสั่งอันทรงพลัง สามารถดูวิธีการเพิ่มเติมได้ในคู่มือโดยการรันคำสั่ง