Android

วิธีค้นหาไฟล์ใน linux โดยใช้บรรทัดคำสั่ง

What the Waters Left Behind Trailer 2 (2018) Los Olvidados

What the Waters Left Behind Trailer 2 (2018) Los Olvidados

สารบัญ:

Anonim

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

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

Linux find ไวยากรณ์คำสั่ง

ไวยากรณ์ทั่วไปสำหรับคำสั่ง find มีดังนี้:

find

  • แอ็ตทริบิวต์ options ควบคุมการจัดการลิงก์สัญลักษณ์ตัวเลือกการดีบักและวิธีการปรับให้เหมาะสม path… แอตทริบิวต์กำหนดไดเรกทอรีเริ่มต้นหรือไดเรกทอรีที่ค้นหาจะค้นหาไฟล์แอตทริบิวต์ expression ประกอบด้วยส่วนของตัวเลือกรูปแบบการค้นหาและ การกระทำคั่นด้วยตัวดำเนินการ

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

ลองมาดูตัวอย่างต่อไปนี้:

find -L /var/www -name "*.js"

  • ตัวเลือก -L (ตัวเลือก) บอกให้คำสั่ง find ทำตามลิงก์สัญลักษณ์ /var/www (เส้นทาง…) ระบุไดเรกทอรีที่จะค้นหา (นิพจน์) -name "*.js บอกให้ค้นหาไฟล์ที่ลงท้ายด้วย .js (ไฟล์ JavaScript)

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

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

ตัวอย่างเช่นหากต้องการค้นหาไฟล์ชื่อ document.pdf ในไดเร็กทอรี /home/linuxize คุณจะใช้คำสั่งต่อไปนี้:

find /home/linuxize -type f -name document.pdf

หากต้องการรันการค้นหาแบบคำนึงถึงขนาดตัวพิมพ์ให้เปลี่ยนตัวเลือก -name ด้วย -iname :

find /home/linuxize -type f -iname document.pdf

คำสั่งด้านบนจะตรงกับ“ Document.pdf”, “ DOCUMENT.pdf”..etc

ค้นหาไฟล์ตามนามสกุล

การค้นหาไฟล์ตามนามสกุลนั้นเหมือนกับการค้นหาไฟล์ตามชื่อ ตัวอย่างเช่นหากต้องการค้นหาไฟล์ทั้งหมดที่ลงท้ายด้วย. .log.gz ภายใน .log.gz /var/log/nginx คุณสามารถใช้:

find /var/log/nginx -type f -name '*.log.gz'

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

หากต้องการค้นหาไฟล์ทั้งหมดที่ไม่ตรงกับ regex *.log.gz คุณสามารถใช้ตัวเลือก *.log.gz ตัวอย่างเช่นหากต้องการค้นหาไฟล์ทั้งหมดที่ไม่ได้ลงท้ายด้วย *.log.gz คุณจะต้องใช้:

find /var/log/nginx -type f -not -name '*.log.gz'

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

บางครั้งคุณอาจต้องค้นหาไฟล์บางประเภทเช่นไฟล์ปกติไดเรกทอรีหรือ symlink ใน Linux ทุกอย่างเป็นไฟล์

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

  • f : ไฟล์ปกติ d : ไดเรกทอรี l : ลิงก์สัญลักษณ์ c : อุปกรณ์อักขระ b : อุปกรณ์บล็อก p : ชื่อไปป์ (FIFO) s : ซ็อกเก็ต

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

find. -type d

ตัวอย่างทั่วไปจะเปลี่ยนการอนุญาตไฟล์เว็บไซต์ซ้ำเป็น 644 และการอนุญาตไดเรกทอรีเป็น 755 โดยใช้คำสั่ง chmod :

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

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

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

  • b : บล็อก 512- ไบต์ (ค่าเริ่มต้น) c : ไบต์ w : คำสองไบต์ k : Kilobytes M : เมกะไบต์ G : กิกะไบต์

คำสั่งต่อไปนี้จะค้นหาไฟล์ทั้งหมดที่ 1024 ไบต์ภายในไดเร็กทอรี /tmp :

find /tmp -type f -size 1024c

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

ในตัวอย่างต่อไปนี้เรากำลังค้นหาไฟล์ทั้งหมดที่น้อยกว่า 1MB ภายในไดเรกทอรีการทำงานปัจจุบัน สังเกตุเครื่องหมายลบ - หน้าค่าขนาด:

find. -type f -size -1M

find. -type f -size +1M

คุณสามารถค้นหาไฟล์ภายในขนาดที่กำหนดได้ คำสั่งต่อไปนี้จะค้นหาไฟล์ทั้งหมดระหว่าง 1 ถึง 2MB :

find. -type f -size +1M -size 21M

ค้นหาไฟล์ตามวันที่แก้ไข

คำสั่ง find ยังสามารถค้นหาไฟล์ตามการปรับเปลี่ยนการเข้าถึงหรือการเปลี่ยนแปลงครั้งล่าสุด

เช่นเดียวกับเมื่อค้นหาตามขนาดใช้สัญลักษณ์บวกและลบสำหรับ "มากกว่า" หรือ "น้อยกว่า"

สมมติว่าไม่กี่วันที่ผ่านมาคุณแก้ไขไฟล์กำหนดค่า dovecot ไฟล์ใดไฟล์หนึ่ง แต่คุณลืมไฟล์ใดไฟล์หนึ่ง คุณสามารถกรองไฟล์ทั้งหมดได้อย่างง่ายดายภายใต้ไดเรกทอรี /etc/dovecot/conf.d ที่ลงท้ายด้วย. .conf และได้รับการแก้ไขในห้าวันที่ผ่านมาด้วย:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

นี่เป็นอีกตัวอย่างของการกรองไฟล์ตามวันที่แก้ไขโดยใช้ตัวเลือก -daystart คำสั่งด้านล่างจะแสดงรายการไฟล์ทั้งหมดใน /home directory ที่ถูกแก้ไข 30 วันขึ้นไป:

find /home -mtime +30 -daystart

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

ตัวเลือก -perm อนุญาตให้คุณค้นหาไฟล์ตามการอนุญาตของไฟล์

ตัวอย่างเช่นหากต้องการค้นหาไฟล์ทั้งหมดที่มีสิทธิ์ 775 เท่าในไดเรกทอรี /var/www/html คุณจะต้องใช้:

find /var/www/html -perm 644

คุณสามารถใส่คำนำหน้าโหมดตัวเลขด้วยเครื่องหมายลบ - หรือเครื่องหมายสแลช /

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

พิจารณาคำสั่งตัวอย่างต่อไปนี้:

find. -perm /444

คำสั่งดังกล่าวจะจับคู่ไฟล์ทั้งหมดที่มีสิทธิ์การอ่านที่กำหนดไว้สำหรับผู้ใช้กลุ่มหรืออื่น ๆ

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

find. -perm -664

ค้นหาไฟล์โดยเจ้าของ

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

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

find / -user linuxize

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

find / -user www-data -type f -exec chown nginx {} ;

ค้นหาและลบไฟล์

หากต้องการลบไฟล์ที่ตรงกันทั้งหมดให้เพิ่มตัวเลือก -delete ต่อท้ายนิพจน์การจับคู่

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

ตัวอย่างเช่นการลบไฟล์ทั้งหมดที่ลงท้ายด้วย. .temp จาก /var/log/ คุณจะใช้:

find /var/log/ -name `*.temp` -delete ใช้ตัวเลือก -delete ด้วยความระมัดระวังอย่างยิ่ง บรรทัดคำสั่ง find ถูกประเมินเป็นนิพจน์และหากคุณเพิ่มตัวเลือก -delete ก่อนคำสั่งจะลบทุกอย่างด้านล่างจุดเริ่มต้นที่คุณระบุ

เมื่อมาถึงไดเร็กทอรี find สามารถลบเฉพาะไดเร็กทอรีที่ว่างเปล่าเช่นเดียวกับ rmdir

ข้อสรุป

เราได้แสดงวิธีใช้คำสั่ง find พร้อมตัวเลือกและเกณฑ์ที่หลากหลาย

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

ค้นหาสถานี