Dalam Linux, anda boleh menggunakan parameter "-prune" bagi arahan find untuk membuat carian tidak mencari subdirektori yang ditentukan semasa mencari fail Perintah find digunakan untuk mencari fail dalam direktori yang ditentukan parameter ditetapkan kepada "-prune "Anda boleh menapis, selagi parameter laluan yang akan diabaikan mesti mengikut laluan carian, jika tidak, parameter tidak akan berfungsi Sintaks ialah "cari laluan subdirektori laluan carian tidak ditemui-. pangkas...".
Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.
Apabila Linux find sedang mencari, kadangkala perlu mengabaikan direktori tertentu dan tidak mencari Anda boleh menggunakan parameter -prune untuk menapis , tetapi ia mestilah Perlu diingat bahawa parameter laluan yang akan diabaikan mesti segera mengikut laluan yang dicari, jika tidak, parameter ini tidak akan berfungsi.
Contohnya adalah seperti berikut:
Berikut ialah carian khusus untuk semua fail dalam direktori /home/carryf, tetapi laluan ke /home/carryf/ astetc akan diabaikan:
find /home/carryf -path "/home/carryf/astetc" -prune -o -type f -print
Jika anda mencari mengikut nama fail:
find /home/carryf -path "/home/carryf/astetc" -prune -o -type f -name "cdr_*.conf" -print
Apakah yang perlu dilakukan jika anda mahu mengabaikan lebih daripada dua laluan?
find /home/carryf −path"/home/carryf/astetc"−o−path"/home/carryf/etc" -prune -o -type f -print find /home/carryf −path"/home/carryf/astetc"−o−path"/home/carryf/etc" -prune -o -type f -name "cdr_*.conf" -print
Perhatikan bahawa terdapat ruang sebelum dan selepas.
Untuk mencari kandungan fail, pernyataan berikut boleh menyelesaikan masalah direktori dengan ruang:
find ./ -name "MySQL*" -print0 |xargs -0 grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"
Jika direktori tidak mempunyai ruang, ia boleh dilaksanakan seperti berikut:
find ./ -name "mysql*" |xargs grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"
Pengetahuan lanjutan
Arahan cari Linux digunakan untuk mencari fail dalam direktori yang ditentukan. Sebarang rentetan sebelum parameter akan dianggap sebagai nama direktori yang akan dicari. Jika anda menggunakan arahan ini tanpa menetapkan sebarang parameter, arahan find akan mencari subdirektori dan fail dalam direktori semasa. Dan semua subdirektori dan fail yang ditemui akan dipaparkan.
Sintaks
find path -option [ -print ] [ -exec -ok command ] {} \;
Penerangan parameter:
cari menentukan laluan dan ungkapan mengikut peraturan berikut, bahagian pertama pada baris arahan - ( ), ! , diikuti dengan ungkapan. Jika laluan ialah rentetan kosong, laluan semasa digunakan Jika ungkapan ialah rentetan kosong, -cetak digunakan sebagai ungkapan lalai. Terdapat sebanyak dua puluh atau tiga puluh pilihan yang tersedia dalam
ungkapan, dan hanya yang paling biasa digunakan diperkenalkan di sini.
-mount, -xdev: Hanya semak fail dalam sistem fail yang sama seperti direktori yang ditentukan, elakkan menyenaraikan fail dalam sistem fail lain
-amin n: Dalam n minit yang lalu Baca
-fail yang lebih baru: Fail yang dibaca kemudian daripada fail fail
-atime n: Fail yang dibaca pada n hari lalu
-cmin n: diubah suai pada n yang lalu minit
-fail cnewer: fail yang lebih baharu daripada fail fail
-ctime n: fail yang dibuat dalam n hari lalu
-mtime n: fail diubah suai pada masa lalu n hari
-kosong: fail kosong -gid n atau -nama kumpulan: gid ialah n atau nama kumpulan ialah nama
- ipath p, -path p: Fail yang nama laluannya sepadan dengan p , ipath akan mengabaikan kes
-name name, -iname name: fail yang nama failnya sepadan dengan nama. iname akan mengabaikan kes
-saiz n: saiz fail ialah n unit, b mewakili blok 512 bait, c mewakili bilangan aksara, k mewakili kilo bait dan w ialah dua bait.
-jenis c: Jenis fail ialah c.
Pembelajaran yang disyorkan: Tutorial video Linux
Atas ialah kandungan terperinci Mengapa mencari dalam Linux tidak mencari subdirektori yang ditentukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!