Perintah Linux dan Unix menemukan mengeksekusi pencarian file dalam hirarki direktori.
Sintaks untuk menemukan perintah:
temukan jalur … ekspresi
Deskripsi
Halaman manual ini mendokumentasikan versi GNU dari menemukan . Perintah menemukan mencari pohon direktori yang di-root pada setiap nama file yang diberikan dengan mengevaluasi ekspresi yang diberikan dari kiri ke kanan, sesuai dengan aturan diutamakan (lihat bagian tentang Operator di bawah), sampai hasilnya diketahui; dengan kata lain, sisi kiri salah untuk dan operasi, berlaku untuk atau , pada titik mana menemukan pindah ke nama file selanjutnya.
Argumen pertama yang dimulai dengan:
- -
- ( atau ),
- !
dianggap sebagai awal ekspresi; setiap argumen sebelum itu adalah jalur untuk mencari, dan argumen apa pun setelah itu adalah sisa dari ekspresi. Jika tidak ada jalan yang diberikan, direktori saat ini digunakan. Jika tidak ada ekspresi yang diberikan, ekspresi -mencetak digunakan.
Itu menemukan perintah keluar dengan status 0 jika semua file berhasil diproses, lebih besar dari 0 jika kesalahan terjadi.
Ekspresi
Ekspresi terdiri dari opsi (yang mempengaruhi operasi keseluruhan daripada pemrosesan file tertentu, dan selalu mengembalikan true), tes (yang mengembalikan nilai benar atau salah), dan tindakan (yang memiliki efek samping dan mengembalikan true atau nilai salah), semua dipisahkan oleh operator. Ekspresi -dan diasumsikan di mana operator dihilangkan. Jika ekspresi tidak mengandung tindakan selain -memangkas , kemudian -mencetak dilakukan pada semua file yang ungkapannya benar.
Pilihan
Semua opsi selalu mengembalikan nilai true. Mereka selalu berlaku, bukan diproses hanya ketika tempat mereka dalam ekspresi tercapai. Oleh karena itu, untuk kejelasan, yang terbaik adalah menempatkannya di awal ungkapan.
| -Mulai hari | Mengukur waktu (untuk -amin, -atime, -cmin, -ctime, -mmin, dan -waktu ) dari awal hari ini, bukan dari 24 jam yang lalu. |
| -kedalaman | Memproses setiap isi direktori sebelum direktori itu sendiri. |
| -mengikuti | Tautan simbolis Dereferensi. Implies -noleaf . |
| -membantu atau --membantu | Cetak ringkasan penggunaan baris perintah menemukan dan keluar. |
| -maxdepth jumlah | Turun paling banyak jumlah tingkatan (bilangan bulat non-negatif) dari direktori di bawah argumen baris perintah. Ekspresi -maxdepth 0 berarti hanya menerapkan tes dan tindakan ke argumen baris perintah. |
| -mindepth number | Jangan menerapkan tes atau tindakan apa pun pada tingkat yang kurang dari angka (bilangan bulat non-negatif). Ekspresi -mindepth 1 berarti memproses semua file kecuali argumen baris perintah. |
| -meningkat | Jangan turunkan direktori pada sistem file lain. Nama alternatif untuk -xdev , untuk kompatibilitas dengan beberapa versi lain menemukan . |
| -noleaf | Jangan optimalkan dengan mengasumsikan bahwa direktori berisi 2 subdirektori lebih sedikit daripada jumlah tautan kerasnya. * |
| -versi atau --versi | Cetak menemukan nomor versi dan keluar. |
| -xdev | Jangan turunkan direktori pada sistem file lain. |
* Opsi ini diperlukan saat mencari filesystem yang tidak mengikuti konvensi direktori-direktori Unix, seperti sistem file CD-ROM atau MS-DOS atau titik-titik mount volume AFS. Setiap direktori pada sistem file Unix yang normal memiliki setidaknya 2 tautan keras: nama dan namanya. (periode) entri. Selain itu, subdirektorinya (jika ada) masing-masing memiliki. entri yang ditautkan ke direktori itu.
Kapan menemukan sedang memeriksa sebuah direktori, setelah itu menstabilkan dua subdirektori lebih sedikit daripada jumlah tautan direktori, ia tahu bahwa sisa dari entri dalam direktori adalah non-direktori ( daun file dalam pohon direktori). Jika hanya nama-nama file yang perlu diperiksa, tidak perlu statistik mereka; ini memberikan peningkatan yang signifikan dalam kecepatan pencarian.
Tes
Argumen numerik dapat ditentukan sebagai:
| + n | Untuk lebih besar dari n. |
| -n | Kurang dari n. |
| n | Tepatnya n. |
| -amin n | File terakhir diakses n beberapa menit yang lalu. |
| -lebih baru file | File terakhir diakses lebih baru daripada mengajukan telah dimodifikasi. -terewer dipengaruhi oleh -Ikuti hanya jika -follow datang sebelum -anewer pada baris perintah. |
| -atime n | File terakhir diakses n * 24 jam yang lalu. |
| -cmin n | Status file terakhir diubah n beberapa menit yang lalu. |
| -cnewer file | Status file terakhir diubah lebih baru daripada file diubah.- cnewer dipengaruhi oleh -mengikuti hanya jika -mengikuti datang sebelum -cnewer pada baris perintah. |
| -kali n | Status file terakhir diubah n * 24 jam yang lalu. |
| -kosong | File kosong dan merupakan file biasa atau direktori. |
| -Salah | Selalu salah. |
| -fstype type | File ada di sistem file tipe tertentu. Jenis filesystem yang valid bervariasi di antara versi Unix yang berbeda; daftar tidak lengkap jenis filesystem yang diterima pada beberapa versi Unix atau lainnya adalah: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Anda dapat menggunakan -printf dengan direktif% F untuk melihat jenis-jenis sistem file Anda. |
| -gid n | ID grup numerik file adalah n . |
| -group gname | File milik grup gname (ID grup numerik diizinkan). |
| -masih pola | Seperti -lname, tapi pertandingan tidak peka huruf besar-kecil. |
| -ama pola | Seperti -nama , tapi pertandingan tidak peka huruf besar-kecil. Misalnya, pola untuk * dan F ?? cocok dengan nama file Foo , FOO , foo , fOo , dll. |
| -inum n | File memiliki nomor inode n . |
| -ipath pattern | Seperti jalan , tapi pertandingan tidak peka huruf besar-kecil. |
| -iregex pattern | Seperti -regex, tapi pertandingan tidak peka huruf besar-kecil. |
| -links n | File memiliki n tautan. |
| -lname pattern | File adalah tautan simbolis yang isinya cocok dengan pola shell. Karakter meta tidak memperlakukan / atau . khususnya. |
| -mmin n | Data file terakhir dimodifikasi n beberapa menit yang lalu. |
| -waktu n | Data file terakhir dimodifikasi n * 24 jam yang lalu. |
| -name pattern | Basis nama file (jalur dengan direktori terkemuka dihapus) cocok dengan pola shell. The metacharacters (*, ?, dan ) tidak cocok dengan . di awal nama dasar. Untuk mengabaikan direktori dan file di bawahnya, gunakan -memangkas ; lihat contoh dalam deskripsi jalan . |
| -newer file | File telah dimodifikasi lebih baru daripada mengajukan . Ekspresi -newer dipengaruhi oleh -mengikuti hanya jika -mengikuti datang sebelum -newer pada baris perintah. |
| -nouser | Tidak ada pengguna yang sesuai dengan ID pengguna numerik file. |
| -nogroup | Tidak ada grup yang sesuai dengan ID grup numerik file. |
| -pola pola | Nama file sesuai dengan pola shell pola . Karakter meta tidak memperlakukan / atau . khususnya; jadi, misalnya,temukan. -panduan './sr*sc akan mencetak entri untuk direktori bernama ./src/misc (jika ada). Untuk mengabaikan seluruh pohon direktori, gunakan -memangkas daripada memeriksa semua file di pohon. Misalnya, untuk melewati direktori src / emacs dan semua file dan direktori di bawahnya, dan mencetak nama-nama file lain yang ditemukan, lakukan sesuatu seperti ini:temukan. -path './src/emacs' -prune -o -print |
| -perm mode | Bit izin file adalah persis mode (oktal atau simbolis). Mode simbolis menggunakan mode 0 sebagai titik keberangkatan. |
| -perm -mode | Semua bit izin mode diatur untuk file. |
| -perm + mode | Setiap bit izin mode diatur untuk file. |
| -regex pattern | Nama file cocok dengan ekspresi reguler pola . Ini adalah kecocokan di seluruh jalur, bukan pencarian. Misalnya, untuk mencocokkan file bernama ./fubar3, Anda dapat menggunakan ekspresi reguler .*bar. atau . * b. * 3, tapi tidak b. * r3. |
| -size n bckw | Penggunaan file n unit ruang. Satuannya adalah blok bita-bit secara default atau jika b berikut n , byte jika c berikut n , kilobyte jika k berikut n , atau kata 2 byte jika diikuti n . Ukurannya tidak menghitung blok tidak langsung, tetapi menghitung blok dalam file jarang yang sebenarnya tidak dialokasikan. |
| -benar | Selalu benar. |
| -jenis c | File adalah tipe c : |
| b | Block (buffered) spesial |
| c | Karakter (unbuffered) khusus |
| d | Direktori |
| p | Pipa bernama (FIFO) |
| f | File biasa |
| l | Tautan simbolis |
| s | Stopkontak |
| D | pintu (Solaris) |
| -uid n | ID pengguna numerik file adalah n . |
| -gunakan n | File terakhir diakses n hari setelah statusnya terakhir diubah. |
| -user uname | File dimiliki oleh pengguna nama kamu (ID pengguna numerik diperbolehkan). |
| -kode c | Sama seperti -mengetik kecuali file itu adalah tautan simbolis. Untuk tautan simbolis: jika -mengikuti belum diberikan, benar jika file tersebut adalah tautan ke jenis file c ; jika -mengikuti telah diberikan, benar jika c adalah l. Dengan kata lain, untuk tautan simbolis, -type periksa jenis file itu -mengetik tidak diperiksa. |
Tindakan
-eks perintah ;
Menjalankan perintah ; true jika status 0 dikembalikan. Semua argumen berikut untukmenemukan diambil menjadi argumen untuk perintah sampai argumen yang terdiri dari `; ' ditemui. String `{} 'diganti dengan nama file saat ini sedang diproses di mana-mana itu terjadi dalam argumen ke perintah, tidak hanya di argumen di mana itu sendiri, seperti dalam beberapa versimenemukan. Kedua konstruksi ini mungkin perlu di-escape (dengan ` ') atau dikutip untuk melindunginya dari ekspansi oleh shell. Perintah dijalankan di direktori awal.
-fls mengajukan
Benar; suka -lalu tapi menulis ke mengajukan seperti -foto.
-foto mengajukan
Benar; cetak nama file lengkap ke dalam file mengajukan . Jika mengajukan tidak ada kapanmenemukan dijalankan, itu dibuat; jika memang ada, itu terpotong. Nama file `` / dev / stdout '' dan `` / dev / stderr '' ditangani secara khusus; mereka mengacu pada output standar dan output kesalahan standar, masing-masing.
-foto0 mengajukan
Benar; suka -print0 tapi menulis ke mengajukan seperti -foto.
-fprintf mengajukan format
Benar; suka -printf tetapi menulis ke mengajukan seperti -foto.
-baik perintah ;
Seperti -exec tetapi tanyakan pengguna terlebih dahulu (pada input standar); jika respons tidak dimulai dengan `y 'atau` Y', jangan jalankan perintah, dan kembalikan false.
-mencetak
Benar; cetak nama file lengkap pada output standar, diikuti oleh baris baru.
-print0
Benar; mencetak nama file lengkap pada output standar, diikuti oleh karakter null.Ini memungkinkan nama-nama file yang mengandung baris baru untuk ditafsirkan dengan benar oleh program yang memprosesmenemukan keluaran.
-printf format
Benar; mencetak format pada output standar, menafsirkan ` 'escapes dan arahan`%'. Bidang lebar dan presisi dapat ditentukan seperti dengan fungsi `printf 'C. Tidak seperti-cetak, -printf tidak menambahkan baris baru di akhir string. Pelarian dan arahannya adalah:
Sebuah
Bel alarm.
b
Menghapus.
c
Hentikan pencetakan dari format ini segera dan flush output.
f
Umpan formulir.
n
Garis baru.
r
Kereta kembali.
t
Tab horizontal.
v
Tab vertikal.
\
Backslash literal (` ').
NNN
Karakter yang kode ASCII-nya adalah NNN (oktal).
Karakter ` 'diikuti oleh karakter lain diperlakukan sebagai karakter biasa, sehingga keduanya dicetak.
%%
Tanda persen literal.
%Sebuah
Waktu akses terakhir file dalam format dikembalikan oleh fungsi C `ctime '.
%SEBUAH k
Waktu akses terakhir file dalam format yang ditentukan oleh k , yang baik `@ 'atau direktif untuk fungsi` strftime `. Nilai yang mungkin untuk k tercantum di bawah ini; beberapa dari mereka mungkin tidak tersedia di semua sistem, karena perbedaan `strftime 'antar sistem.
@
detik sejak 1 Januari 1970, 00:00 GMT.
Bidang waktu:
H
jam (00..23)
saya
jam (01..12)
k
jam (0..23)
l
jam (1..12)
M
menit (00..59)
p
lokal AM atau PM
r
waktu, 12 jam (hh: mm: ss AP M)
S
kedua (00..61)
T
waktu, 24 jam (jj: mm: dd)
X
representasi waktu lokal (H: M: S)
Z
zona waktu (mis., EDT), atau tidak ada apa pun jika tidak ada zona waktu yang dapat ditentukan
Bidang tanggal:
Sebuah
nama hari kerja lokal yang disingkat (Sun..Sat)
SEBUAH
nama hari kerja penuh lokal, panjang variabel (Sunday..Saturday)
b
nama bulan singkatan lokal (Jan..Dec)
B
nama bulan penuh lokal, panjang variabel (Januari..December)
c
tanggal dan waktu locale (Sat Nov 04 12:02:33 EST 1989)
d
hari bulan (01..31)
D
tanggal (bb / dd / yy)
h
sama seperti b
j
hari tahun (001..366)
m
bulan (01..12)
U
jumlah minggu dalam setahun dengan hari Minggu sebagai hari pertama dalam minggu (00..53)
w
hari dalam seminggu (0..6)
W
jumlah minggu dalam setahun dengan hari Senin sebagai hari pertama dalam minggu (00..53)
x
representasi tanggal lokal (mm / dd / yy)
y
dua digit terakhir tahun ini (00..99)
Y
tahun (1970 …)
% b
Ukuran file dalam blok 512-byte (dibulatkan ke atas).
% c
Waktu perubahan status file terakhir dalam format dikembalikan oleh fungsi C `ctime '.
% C k
Waktu perubahan status file terakhir dalam format yang ditentukan oleh k , yang sama dengan% A.
% d
Kedalaman file dalam pohon direktori; 0 berarti file adalah argumen baris perintah.
% f
Nama file dengan direktori terkemuka dihapus (hanya elemen terakhir).
% F
Jenis sistem file tempat file aktif; nilai ini dapat digunakan untuk -fstype.
% g
Nama grup file, atau ID grup numerik jika grup tidak memiliki nama.
% G
ID grup numerik file.
% h
Memimpin direktori nama file (semua kecuali elemen terakhir).
% H
Argumen baris perintah di bawah file yang ditemukan.
%saya
Nomor inode file (dalam desimal).
% k
Ukuran file dalam 1K blok (dibulatkan ke atas).
% l
Objek tautan simbolis (string kosong jika file bukan tautan simbolis).
% m
Bit izin file (dalam oktal).
% n
Jumlah tautan keras ke file.
% p
Nama file.
% P
Nama file dengan nama argumen baris perintah yang ditemukan telah dihapus.
% s
Ukuran file dalam byte.
% t
Waktu modifikasi file terakhir dalam format dikembalikan oleh fungsi C `ctime '.
% T k
Waktu modifikasi terakhir file dalam format yang ditentukan oleh k , yang sama dengan% A.
% u
Nama pengguna file, atau ID pengguna numerik jika pengguna tidak memiliki nama.
% U
ID pengguna numerik file.
Karakter `% 'diikuti oleh karakter lain dibuang (tetapi karakter lain dicetak).
-memangkas
Jika -depth tidak diberikan, benar; jangan turun dari direktori saat ini.Jika -depth diberikan, salah; tidak berpengaruh. -ls Benar; daftar file saat ini dalam format `ls -dils 'pada output standar. Jumlah blok adalah 1K blok, kecuali variabel lingkungan POSIXLY_CORRECT diatur, dalam hal ini blok 512-byte digunakan. Terdaftar dalam urutan penurunan presedensi: ( expr ) Mendahulukan kekuatan. ! expr Benar kalau expr salah. -tidak expr Sama dengan ! expr . expr1 expr2 Dan (tersirat); expr2 tidak dievaluasi jika expr1 salah. expr1 -Sebuah expr2 Sama dengan expr1 expr2 . expr1 -dan expr2 Sama dengan expr1 expr2 . expr1 -Hai expr2 Atau; expr2 tidak dievaluasi jika expr1 adalah benar. expr1 -atau expr2 Sama dengan expr1 -Hai expr2 . expr1 , expr2 Daftar; kedua expr1 dan expr2 selalu dievaluasi. Nilai dari expr1 dibuang; nilai daftar adalah nilai dari expr2 . temukan / home -user joe
Temukan setiap file di bawah direktori / home yang dimiliki oleh pengguna joe. temukan / usr -name * stat
Temukan setiap file di bawah direktori / usr berakhiran ".stat". temukan / var / spool -mtime +60
Temukan setiap file di bawah direktori / var / spool yang telah dimodifikasi lebih dari 60 hari yang lalu. temukan / tmp -name core -type f -print | xargs / bin / rm -f
Temukan file bernamainti di atau di bawah direktori/ tmp dan hapus mereka.Perhatikan bahwa ini akan bekerja dengan tidak benar jika ada nama file yang berisi baris baru, tanda kutip tunggal atau ganda, atau spasi. temukan / tmp -name core -type f -print0 | xargs -0 / bin / rm -f
Temukan file bernamainti di atau di bawah direktori/ tmp dan menghapusnya, memproses nama file sedemikian rupa sehingga file atau nama direktori yang berisi tanda kutip tunggal atau ganda, spasi atau baris baru ditangani dengan benar. Itu-nama tes datang sebelum-mengetik tes untuk menghindari panggilanstat (2) pada setiap file. temukan. -type f -exec file '{}' ;
Menjalankan `file 'pada setiap file di atau di bawah direktori saat ini. Perhatikan bahwa tanda kurung diapit oleh tanda kutip tunggal untuk melindunginya dari interpretasi sebagai tanda baca skrip shell. Titik koma sama-sama dilindungi oleh penggunaan backslash, meskipun ';' bisa digunakan dalam kasus itu juga. temukan / (-perm -4000 -fprintf /root/suid.txt '% # m% u% p n' ), (-size + 100M -fprintf /root/big.txt '% -10s% p n' )
Melintasi sistem file hanya sekali, daftar file dan direktori setuid ke/root/suid.txt dan file besar ke dalam/root/big.txt. temukan $ HOME -mtime 0
Cari file di direktori home Anda yang telah dimodifikasi dalam dua puluh empat jam terakhir. Perintah ini bekerja dengan cara ini karena waktu sejak setiap file terakhir diubah dibagi dengan 24 jam dan sisanya dibuang. Itu berarti cocok-waktu 0, file harus memiliki modifikasi di masa lalu yang kurang dari 24 jam yang lalu. temukan. -perma 664
Cari file yang memiliki izin baca dan tulis untuk pemiliknya, dan grup, tetapi pengguna lain mana yang dapat membaca tetapi tidak menulis. File yang memenuhi kriteria ini tetapi memiliki bit izin lainnya yang ditetapkan (misalnya jika seseorang dapat mengeksekusi file) tidak akan dicocokkan. temukan. -perm -664
Cari file yang memiliki izin baca dan tulis untuk pemilik dan grup mereka, dan yang dapat dibaca oleh pengguna lain, tanpa memperhatikan keberadaan bit izin tambahan (misalnya bit yang dapat dieksekusi). Ini akan cocok dengan file yang memiliki mode 0777, misalnya. temukan. -perm / 222
Cari file yang dapat ditulis oleh seseorang (pemiliknya, atau grup mereka, atau siapa pun). temukan. -perm / 220 temukan. -perm / u + w, g + w temukan. -perm / u = w, g = w
Ketiga perintah ini melakukan hal yang sama, tetapi yang pertama menggunakan representasi oktal dari mode file, dan dua lainnya menggunakan bentuk simbolik. Semua perintah ini mencari file yang dapat ditulis oleh pemilik atau grup mereka. File tidak harus dapat ditulis oleh pemilik dan grup untuk dicocokkan; akan melakukannya. temukan. -perm -220 temukan. -perm -g + w, u + w
Kedua perintah ini melakukan hal yang sama; mencari file yang dapat ditulis oleh pemilik dan grup mereka. temukan. -perm -444 -perm / 222! -perm / 111 temukan. -perm -a + r -perm / a + w! -perm / a + x
Kedua perintah ini mencari file yang dapat dibaca oleh semua orang (-perm -444 atau -perm -a + r), setidaknya menulis bit set (-perm / 222 atau -perm / a + w) tetapi tidak dapat dieksekusi untuk siapa saja (! -perm / 111 dan! -perm / a + x masing-masing) Penting: Menggunakan pria perintah ( % pria ) untuk melihat bagaimana perintah digunakan pada komputer khusus Anda.Operator
Contoh




