ใช้ Linux และ Unix Command: ค้นหา

คำสั่ง Linux และ Unix จะค้นหาการค้นหาไฟล์ในลำดับชั้นของไดเร็กทอรี

ไวยากรณ์สำหรับ ค้นหา คำสั่ง:

หา [เส้นทาง ... ] [นิพจน์]

ลักษณะ

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

อาร์กิวเมนต์แรกที่ขึ้นต้นด้วย:

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

คำสั่ง find จะมีสถานะ 0 หากไฟล์ทั้งหมดได้รับการประมวลผลเรียบร้อยแล้วมากกว่า 0 หากเกิดข้อผิดพลาดขึ้น

การแสดงออก

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

ตัวเลือก

ตัวเลือกทั้งหมดจะเป็นจริงเสมอ พวกเขามักจะมีผลมากกว่าการประมวลผลเฉพาะเมื่อสถานที่ในการแสดงออกถึง ดังนั้นเพื่อความชัดเจนควรวางไว้ที่จุดเริ่มต้นของนิพจน์

-daystart วัดเวลา (สำหรับ --amin, -atime, -cmin, -time, -mmin และ -mtime ) ตั้งแต่ต้นวันนี้มากกว่าจาก 24 ชั่วโมงที่ผ่านมา
-ความลึก ประมวลผลเนื้อหาของแต่ละไดเร็กทอรีก่อนไดเรกทอรี
ควรตาม การเชื่อมโยงสัญลักษณ์ Dereference Implies -leleaf
ช่วยเหลือ หรือ - ช่วยเหลือ พิมพ์สรุปการใช้บรรทัดคำสั่งในการ ค้นหา และออก
- maxdepth [หมายเลข] (จำนวนเต็มไม่ติดลบ) ของไดเรกทอรีใต้อาร์กิวเมนต์บรรทัดคำสั่ง นิพจน์ -maxdepth 0 หมายถึงเฉพาะใช้การทดสอบและการดำเนินการกับอาร์กิวเมนต์บรรทัดคำสั่ง
- เดือน [จำนวน] อย่าใช้การทดสอบหรือการกระทำใด ๆ ในระดับที่น้อยกว่าจำนวน (จำนวนเต็มที่ไม่ติดลบ) นิพจน์ -mindepth 1 หมายถึงประมวลผลไฟล์ทั้งหมดยกเว้นอาร์กิวเมนต์บรรทัดคำสั่ง
-mount ไม่ลงมาไดเรกทอรีในระบบแฟ้มอื่น ๆ ชื่อสำรองสำหรับ -xdev สำหรับความเข้ากันได้กับรุ่นอื่น ๆ ของการ ค้นหา
-noleaf ไม่เพิ่มประสิทธิภาพโดยสมมติว่าไดเรกทอรีที่มี 2 ไดเรกทอรีย่อยน้อยกว่านับลิงก์ยาก *
- เวอร์ชัน หรือ - เวอร์ชัน พิมพ์หมายเลขเวอร์ชันที่ต้องการแล้วออก
-xdev ไม่ลงมาไดเรกทอรีในระบบแฟ้มอื่น ๆ

* จำเป็นต้องใช้ตัวเลือกนี้เมื่อค้นหาระบบแฟ้มที่ไม่ปฏิบัติตามกฎการเชื่อมโยงไดเรกทอรีไดเร็กทอรี Unix เช่นระบบไฟล์ของ CD-ROM หรือ MS-DOS หรือจุดเชื่อมต่อข้อมูล AFS แต่ละไดเร็กทอรีในระบบไฟล์ Unix ปกติจะมีลิงก์อย่างน้อย 2 รายการ ได้แก่ ชื่อและ ไฟล์ (ระยะเวลา) นอกจากนี้ไดเรกทอรีย่อย (ถ้ามี) แต่ละรายการมี .. เชื่อมโยงกับไดเรกทอรีนั้น

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

การทดสอบ

อาร์กิวเมนต์ตัวเลขสามารถระบุได้ดังนี้

n + สำหรับมากกว่า n
-n สำหรับน้อยกว่า n
n สำหรับ n ตรง
-amin n ไฟล์ถูกเข้าถึงครั้งล่าสุดเมื่อไม่นานมานี้
- ใหม่ [ไฟล์] เพิ่งมีการเข้าถึง ไฟล์ เมื่อไม่นานมานี้มีการแก้ไข ไฟล์ - ใหม่จะได้รับผลกระทบโดย - ตาม - เฉพาะเมื่อ - ตามมาก่อน - อีกครั้งในบรรทัดคำสั่ง
เวลา n ไฟล์ถูกเข้าถึงล่าสุด n * 24 ชั่วโมงที่ผ่านมา
- n n สถานะของไฟล์มีการเปลี่ยนแปลงครั้งล่าสุดเมื่อไม่นานมานี้
-cnewer [ไฟล์] สถานะไฟล์ได้รับการเปลี่ยนแปลงครั้งล่าสุดเมื่อเร็ว ๆ นี้กว่าที่มีการแก้ไขไฟล์
- cnewer จะได้รับผลกระทบจาก - -follow เท่านั้นถ้า - ตาม มาก่อน - cnewer ในบรรทัดคำสั่ง
ช่วงเวลา n สถานะของไฟล์มีการเปลี่ยนแปลงล่าสุด n * 24 ชั่วโมงที่ผ่านมา
-empty ไฟล์ว่างเปล่าและเป็นไฟล์ปกติหรือไดเรกทอรี
-false เสมอเท็จ
-fstype [ชนิด] ไฟล์อยู่ในระบบแฟ้มชนิดที่ระบุ ประเภทของระบบไฟล์ที่ถูกต้องแตกต่างกันไปในหลายรุ่นของ Unix; รายการระบบแฟ้มที่ไม่สมบูรณ์ที่ได้รับการยอมรับใน Unix หรือเวอร์ชันอื่นคือ: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K คุณสามารถใช้ -printf กับคำสั่ง% F เพื่อดูชนิดของระบบแฟ้มของคุณ
-gid n รหัสกลุ่มตัวเลขของไฟล์คือ n
กลุ่ม [gname] ไฟล์เป็นของกลุ่ม gname (อนุญาตให้ใช้กลุ่มตัวเลขได้)
-ilname [pattern] ชอบ - ชื่อ แต่การจับคู่เป็นกรณีที่ไม่รู้สึกตัว
ใส่ชื่อ [pattern] ชอบ - ชื่อ แต่การจับคู่เป็นกรณีที่ไม่รู้สึกตัว ตัวอย่างเช่นรูปแบบ สำหรับ * และ F? ตรงกับชื่อไฟล์ Foo , FOO , foo , fOo ฯลฯ
-inum n ไฟล์มีหมายเลข inode n
-ipath [pattern] ชอบ -path แต่การจับคู่เป็นกรณี insensitive
-exgex [รูปแบบ] เช่นเดียวกับ -regex แต่การจับคู่แบบไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่
เชื่อมโยง n ไฟล์มี n ลิงก์
รูปแบบ ไฟล์เป็นลิงก์สัญลักษณ์ซึ่งมีเนื้อหาตรงกับรูปแบบเชลล์ metacharacters ไม่ถือว่า / หรือ พิเศษ
-mmin n ข้อมูลของไฟล์ได้รับการแก้ไขครั้งล่าสุดเมื่อไม่นานมานี้
- mtime n ข้อมูลของไฟล์ได้รับการปรับปรุงครั้งล่าสุด n * 24 ชั่วโมงที่ผ่านมา
- ชื่อ [รูปแบบ] ฐานของชื่อไฟล์ (เส้นทางที่มีไดเรกทอรีชั้นนำที่ลบออก) ตรงกับรูปแบบของเชลล์ อักขระ metacharacters ( * ,? และ [] ) ไม่ตรงกับ a . ที่จุดเริ่มต้นของชื่อฐาน เมื่อต้องการละเว้นไดเรกทอรีและไฟล์ที่อยู่ภายใต้นั้นให้ใช้ -prune ; ดูตัวอย่างในคำอธิบายของ -path
ใหม่ [ไฟล์] ไฟล์ได้รับการแก้ไขเมื่อเร็ว ๆ นี้กว่า ไฟล์ นิพจน์ -newer จะได้รับผลกระทบจาก - -follow เท่านั้นหาก -follow มาก่อน -newer ในบรรทัดคำสั่ง
-nouser ไม่มีผู้ใช้ใดที่ตรงกับ ID ผู้ใช้ที่เป็นตัวเลขของไฟล์
-nogroup ไม่มีกลุ่มใดที่สอดคล้องกับ ID กลุ่มตัวเลขของไฟล์
-path [pattern] ชื่อไฟล์ตรงกับรูปแบบลายเชลล์ metacharacters ไม่ถือว่า / หรือ พิเศษ; ตัวอย่างเช่นค้นหา -path './sr*sc จะพิมพ์รายการสำหรับไดเรกทอรีที่ชื่อ ./src/misc (ถ้ามีอยู่) หากไม่สนใจโครงสร้างไดเร็กทอรีให้ใช้ -prune แทนการตรวจสอบไฟล์ทั้งหมดในโครงสร้าง ตัวอย่างเช่นในการข้ามไดเร็กทอรี src / emacs และไฟล์และไดเร็กทอรีทั้งหมดภายใต้นั้นและพิมพ์ชื่อของไฟล์อื่น ๆ ที่พบไว้ให้ทำดังนี้: ค้นหา -path './src/emacs' -prune -o -print
-perm [โหมด] บิตการให้สิทธิ์ของไฟล์นั้นตรงกับ [โหมด] (รูปแปดหรือสัญลักษณ์) โหมดสัญลักษณ์ใช้โหมด 0 เป็นจุดเริ่มต้น
-perm -mode บิตอนุญาตทั้งหมด [โหมด] ถูกตั้งค่าไว้สำหรับไฟล์
-perm + โหมด บิตอนุญาตใด ๆ [โหมด] ถูกตั้งค่าไว้สำหรับไฟล์
-regex [รูปแบบ] ชื่อไฟล์ตรงกับ รูปแบบ นิพจน์ทั่วไป นี่เป็นการจับคู่บนเส้นทางทั้งหมดไม่ใช่การค้นหา ตัวอย่างเช่นเพื่อให้ตรงกับไฟล์ที่ชื่อ. /fubar3 คุณสามารถใช้นิพจน์ทั่วไป * bar หรือ b. 3 แต่ไม่ b. r3 .
ขนาด n [bckw] ไฟล์ใช้หน่วยพื้นที่ n หน่วยเป็นบล็อก 512 ไบต์ตามค่าเริ่มต้นหรือถ้า b ทำตาม n ไบต์ถ้า c ทำตาม n กิโลไบต์ถ้า k ตาม n หรือ 2 ไบต์ถ้า w ทำตาม n ขนาดจะไม่นับจำนวนบล็อคทางอ้อม แต่จะนับจำนวนบล็อกในไฟล์ที่เบาบางที่ไม่ได้รับการจัดสรรจริง
-true เสมอจริง
ประเภท c ไฟล์เป็นประเภท c :
บล็อก (บัฟเฟอร์) พิเศษ
อักขระ (unbuffered) พิเศษ
d ไดเรกทอรี
พี ท่อที่มีชื่อ (FIFO)
ไฟล์ปกติ
ล. ลิงค์สัญลักษณ์
s เบ้า
D ประตู (Solaris)
- ให้ n ID ผู้ใช้ที่เป็นตัวเลขของไฟล์คือ n
ใช้ n ไฟล์ถูกเข้าถึงครั้งล่าสุดเมื่อ n วันหลังจากเปลี่ยนสถานะล่าสุด
- ผู้ใช้ uname ไฟล์เป็นของผู้ใช้ที่ไม่ได้รับอนุญาต (ID ผู้ใช้ ID อนุญาต)
-xtype c เช่นเดียวกับ ชนิด ยกเว้นไฟล์เป็นลิงก์สัญลักษณ์ สำหรับการเชื่อมโยงสัญลักษณ์: ถ้าไม่ได้รับการกำหนดตาม - จริงถ้าไฟล์เป็นลิงค์ไปยังไฟล์ประเภท c ; ถ้า - ตามที่ ได้รับจริงถ้า c คือ l ในคำอื่น ๆ สำหรับการเชื่อมโยงสัญลักษณ์,
-tytype ตรวจสอบชนิดของไฟล์ที่ ชนิด ไม่ได้ตรวจสอบ

การปฏิบัติ

- คำสั่ง exec;

ดำเนินการ คำสั่ง ; true ถ้ามีการส่งกลับสถานะ 0 อาร์กิวเมนต์ทั้งหมดต่อไปนี้เพื่อ ค้นหา ถูกนำไปเป็นอาร์กิวเมนต์ของคำสั่งจนกว่าอาร์กิวเมนต์ประกอบด้วย `; ' จะพบ สตริง `{} 'จะถูกแทนที่ด้วยชื่อไฟล์ปัจจุบันที่กำลังประมวลผลทุกที่ที่เกิดขึ้นในอาร์กิวเมนต์ของคำสั่งไม่ใช่เฉพาะในอาร์กิวเมนต์ที่อยู่คนเดียวเช่นเดียวกับในบางรุ่นของการ ค้นหา โครงสร้างทั้งสองแบบนี้อาจจำเป็นต้องหลบหนี (ด้วย `\ ') หรืออ้างเพื่อปกป้องพวกเขาจากการขยายตัวโดยเปลือก คำสั่งจะถูกเรียกใช้ในไดเร็กทอรีเริ่มต้น

- ไฟล์ fls

ทรู; เช่น -ls แต่เขียนไปยัง ไฟล์ เช่นพิมพ์

ไฟล์พิมพ์

ทรู; พิมพ์ชื่อไฟล์แบบเต็มลงใน ไฟล์ หาก ไฟล์ ไม่ พบ เมื่อ ค้นหา ถูกเรียกใช้จะถูกสร้างขึ้น ถ้าไม่มีอยู่จะถูกตัดทอน ชื่อไฟล์ `` / dev / stdout '' และ `` / dev / stderr '' ถูกจัดการโดยเฉพาะ หมายถึงเอาท์พุทมาตรฐานและเอาท์พุทข้อผิดพลาดมาตรฐานตามลำดับ

ไฟล์ -print0

ทรู; เช่น -print0 แต่เขียนไปยัง ไฟล์ เช่น -print

รูปแบบ ไฟล์ fprintf

ทรู; เช่น -printf แต่เขียนไปยัง ไฟล์ เช่น - พิมพ์

คำสั่ง -ok;

เช่น - ไม่ต้องถามผู้ใช้ก่อน (ในอินพุตมาตรฐาน); ถ้าการตอบสนองไม่ได้เริ่มต้นด้วย `y 'หรือ` Y' อย่าใช้คำสั่งและส่งกลับค่า false

-พิมพ์

ทรู; พิมพ์ชื่อไฟล์แบบเต็มบนเอาต์พุตมาตรฐานตามด้วยบรรทัดใหม่

-print0

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

รูปแบบ ลายนิ้วมือ

ทรู; พิมพ์ รูปแบบ บนเอาต์พุตมาตรฐานแปลคำสั่ง `\ 'escapes และ`%' ความกว้างฟิลด์และความละเอียดสามารถระบุได้เช่นเดียวกับฟังก์ชัน `printf 'C ไม่เหมือนกับ -print, -printf ไม่เพิ่มบรรทัดใหม่ที่ท้ายสตริง หนีและคำสั่งคือ:

\ a

กระดิ่งปลุก

\ ข

Backspace

\ ค

หยุดการพิมพ์จากรูปแบบนี้ทันทีและล้างข้อมูลออก

\ ฉ

ฟีดรูปแบบ.

\ n

นิวไลน์

\ r

กลับรถ

\ t

แท็บแนวนอน

\ วี

แท็บแนวตั้ง

\\

เครื่องหมายทับขวาแบบอักษร ("\")

\ มมมม

อักขระที่มีรหัส ASCII คือ NNN (เลขฐานแปด)

อักขระ `\ 'ตามด้วยอักขระอื่น ๆ จะถือว่าเป็นอักขระธรรมดาดังนั้นทั้งสองแบบจึงถูกพิมพ์ออกมา

%%

เครื่องหมายเปอร์เซ็นต์ที่แท้จริง

% ใน

เวลาเข้าถึงครั้งสุดท้ายของไฟล์ในรูปแบบที่ส่งคืนโดยฟังก์ชัน C `ctime '

% k

เวลาเข้าถึงครั้งสุดท้ายของแฟ้มในรูปแบบที่ระบุโดย k ซึ่งเป็น `@ 'หรือคำสั่งสำหรับฟังก์ชัน C strftime' ค่าที่เป็นไปได้สำหรับ k แสดงไว้ด้านล่าง; บางคนอาจไม่สามารถใช้ได้กับทุกระบบเนื่องจากความแตกต่างระหว่าง `strftime 'ระหว่างระบบ

แอท

วินาทีนับตั้งแต่วันที่ 1 มกราคม 1970 เวลา 00:00 น. GMT

เขตข้อมูลเวลา:

H

ชั่วโมง (00..23)

ผม

ชั่วโมง (01..12)

k

ชั่วโมง (0..23)

ล.

ชั่วโมง (1..12)

M

นาที (00..59)

พี

AM หรือ PM ของสถานที่

R

เวลา, 12 ชั่วโมง (hh: mm: ss [AP] M)

S

วินาที (00..61)

T

เวลา, ชั่วโมง (ชั่วโมง: มม.: นาที)

X

การแสดงเวลาของสถานที่ (H: M: S)

Z

โซนเวลา (เช่น EDT) หรือไม่ถ้าไม่มีกำหนดโซนเวลา

ฟิลด์วันที่:

ชื่อย่อของชื่อย่อในท้องที่ (Sun..Sat)

ชื่อวันทำงานเต็มรูปแบบของท้องถิ่น, ความยาวตัวแปร (วันอาทิตย์ .. วันเสาร์)

ชื่อเดือนย่อของสถานที่เกิดเหตุ (Jan.Dec)

B

ชื่อเดือนเต็มของท้องถิ่นความยาวตัวแปร (มกราคม .. ธันวาคม)

วันที่และเวลาของโลแคล (ส.ค. 04 12:02:33 EST 1989)

d

วันในเดือน (01..31)

D

วันที่ (เดือน / วัน / ปี)

ชั่วโมง

เช่นเดียวกับข

J

วันในปี (001..366)

ม.

เดือน (01..12)

ยู

สัปดาห์ของสัปดาห์กับวันอาทิตย์เป็นวันแรกของสัปดาห์ (00..53)

W

วันในสัปดาห์ (0..6)

W

สัปดาห์ของสัปดาห์กับวันจันทร์เป็นวันแรกของสัปดาห์ (00..53)

x

การแสดงวันที่ของมัสยิด (ม.ค. / ดด / ปปปป)

Y

ตัวเลขสองหลักสุดท้ายของปี (00..99)

Y

ปี (1970 ... )

b%

ขนาดไฟล์ในบล็อค 512 ไบต์ (ปัดขึ้น)

c%

เวลาการเปลี่ยนแปลงสถานะล่าสุดของไฟล์ในรูปแบบที่ส่งคืนโดยฟังก์ชัน C 'ctime'

% C

เวลาการเปลี่ยนแปลงสถานะล่าสุดของไฟล์ในรูปแบบที่ระบุโดย k ซึ่งเป็นเช่นเดียวกับ% A

% d

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

f%

ชื่อของไฟล์ถูกลบด้วยไดเรกทอรีชั้นนำ (เฉพาะองค์ประกอบสุดท้าย)

F%

ประเภทของระบบแฟ้มที่เปิดไฟล์ ค่านี้สามารถใช้สำหรับ -fstype

% g

ชื่อกลุ่มไฟล์หรือ ID กลุ่มตัวเลขถ้ากลุ่มไม่มีชื่อ

G%

ID กลุ่มตัวเลขของไฟล์

% h

ไดเรกทอรีชั้นนำของชื่อไฟล์ (ทั้งหมดยกเว้นองค์ประกอบสุดท้าย)

H%

อาร์กิวเมนต์บรรทัดคำสั่งตามไฟล์ที่พบ

%ผม

หมายเลข inode ของไฟล์ (เป็นทศนิยม)

% k

ขนาดไฟล์เป็น 1K บล็อก (ปัดเศษขึ้น)

l%

วัตถุของลิงค์สัญลักษณ์ (สตริงว่างถ้าไฟล์ไม่ใช่ลิงค์สัญลักษณ์)

% m

บิตอนุญาตของไฟล์ (ในรูป octal)

n%

จำนวนของฮาร์ดลิ้งค์ที่จะยื่น

p%

ชื่อไฟล์

% P

ชื่อไฟล์มีชื่ออาร์กิวเมนต์บรรทัดคำสั่งตามที่พบว่าถูกนำออก

% s

ขนาดไฟล์เป็นไบต์

t%

เวลาในการแก้ไขครั้งสุดท้ายของไฟล์ในรูปแบบที่ส่งกลับโดยฟังก์ชัน C 'ctime'

% T k

เวลาในการแก้ไขครั้งสุดท้ายของไฟล์ในรูปแบบที่ระบุโดย k ซึ่งเป็นเช่นเดียวกับ% A

%ยู

ชื่อผู้ใช้ของไฟล์หรือ ID ผู้ใช้ที่เป็นตัวเลขถ้าผู้ใช้ไม่มีชื่อ

%ยู

ID ผู้ใช้ตัวเลขของไฟล์

อักขระ `% 'ตามด้วยอักขระอื่น ๆ จะถูกละทิ้ง (แต่จะพิมพ์อักขระอื่น)

-พรุน

ถ้าไม่ได้รับความลึกซึ้งเป็นความจริง ไม่ลงมาไดเรกทอรีปัจจุบัน
ถ้าเป็นเท็จ - เท็จ ไม่มีผลกระทบ.

-ls

ทรู; แสดงรายการไฟล์ปัจจุบันในรูปแบบ `ls -dils 'ในเอาท์พุทมาตรฐาน จำนวนบล็อกนับเป็นบล็อก 1K เว้นแต่ว่าได้ตั้งค่าตัวแปร POSIXLY_CORRECT ของสภาพแวดล้อมซึ่งในกรณีนี้จะมีการใช้บล็อก 512 ไบต์

ผู้ประกอบการ

เรียงตามลำดับความสำคัญที่ลดลง:

( expr )

บังคับความสำคัญ

! expr

จริงถ้า expr เป็นเท็จ

- ไม่ใช่ expr

เหมือนกับ ! expr

expr1 expr2

และ (โดยนัย); ไม่ expr2 ถ้า expr1 เป็น false

expr1 -a expr2

เหมือนกับ expr1 expr2

expr1- และ expr2

เหมือนกับ expr1 expr2

expr1 -o expr2

หรือ; expr2 ไม่ได้รับการประเมินถ้า expr1 เป็น true

expr1 - หรือ expr2

เช่นเดียวกับ expr1 -o expr2

expr1 , expr2

รายการ; ทั้ง expr1 และ expr2 จะได้รับการประเมินอยู่เสมอ ค่าของ expr1 ถูกยกเลิก; ค่าของรายการคือค่าของ expr2

ตัวอย่าง

หา / home -user joe

ค้นหาทุกไฟล์ภายใต้ไดเร็กทอรี / home ที่เป็นของผู้ใช้ joe

หา / usr -name * stat

ค้นหาไฟล์ทุกไฟล์ในไดเรกทอรี / usr ที่ลงท้ายด้วย ".stat"

หา / var / spool -mtime +60

ค้นหาทุกไฟล์ภายใต้ไดเร็กทอรี / var / spool ที่แก้ไขมากกว่า 60 วันที่ผ่านมา

หา / tmp -name หลักประเภท f -print | xargs / bin / rm -f

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

หา / tmp -name core-type f -print0 | xargs -0 / bin / rm -f

ค้นหาไฟล์ชื่อ core ในหรือใต้ไดเร็กทอรี / tmp และลบไฟล์เหล่านั้นประมวลผลชื่อไฟล์ในลักษณะที่ชื่อไฟล์หรือไดเร็กทอรีที่มีเครื่องหมายอัญประกาศเดี่ยวหรือสองช่องว่างหรือบรรทัดใหม่จะถูกจัดการอย่างถูกต้อง การทดสอบ ชื่อ จะมาก่อนการทดสอบ ชนิด เพื่อหลีกเลี่ยงการเรียก stat (2) ในทุกไฟล์

หา - type f -exec file '{}' \;

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

หา / \ (-perm -4000 -fprintf /root/suid.txt '% # m% u% p \ n' \), \ \ (-size + 100M -fprintf /root/big.txt '% -10s% p \ n '\)

สำรวจระบบไฟล์เพียงครั้งเดียวโดยระบุไฟล์ setuid และไดเร็กทอรีลงใน /root/suid.txt และไฟล์ขนาดใหญ่ลงใน /root/big.txt

หา $ HOME - เวลา 0

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

0 ไฟล์จะต้องมีการแก้ไขในอดีตซึ่งน้อยกว่า 24 ชั่วโมงที่ผ่านมา

หา -perm 664

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

หา -perm -664

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

หา -perm / 222

ค้นหาไฟล์ที่สามารถเขียนได้โดยใครบางคน (เจ้าของหรือกลุ่มของพวกเขาหรือคนอื่น)

หา -perm / 220 หาได้ -perm / u + w, g + w find -perm / u = w, g = w

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

หา -perm -220 ค้นหา -perm -g + w, u + w

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

หา -perm -444 -perm / 222! -perm / 111 หาได้ -perm -a + r -perm / a + w! -perm / a + x

คำสั่งทั้งสองนี้ค้นหาแฟ้มที่สามารถอ่านได้สำหรับทุกคน (-perm -444 หรือ -perm-a + r) มีอย่างน้อยในชุดบิตการเขียน (-perm / 222 หรือ -perm / a + w) แต่ไม่สามารถใช้งานได้ สำหรับใคร (! -perm / 111 และ! -perm / a + x ตามลำดับ)

สำคัญ: ใช้คำสั่ง man ( % man ) เพื่อดูว่าคำสั่งถูกใช้อย่างไรในคอมพิวเตอร์เครื่องใดเครื่องหนึ่งของคุณ