Linux / Unix FAQ: Dapatkah Anda berbagi beberapa Linuxmenemukan contoh perintah?
Yakin. Linux
find
perintah yang sangat kuat. Hal ini dapat mencari seluruh filesystem untuk menemukan file dan direktori sesuai dengan kriteria pencarian Anda tentukan. Selain menggunakan find
perintah untuk mencari file, Anda juga dapat menggunakannya untuk mengeksekusi lainnya Linuxperintah ( grep
, mv
, rm
, dll) pada file dan direktori Anda menemukan, yang membuat find
bahkan lebih kuat.
Pada artikel ini saya akan melihat pada penggunaan yang paling umum dari
find
perintah.
(Ruang ini sengaja dikosongkan untuk itu “daftar isi” panjang di sana ->)
Ringkas 'menemukan' contoh perintah
Jika Anda hanya ingin melihat beberapa contoh dan melewatkan membaca, di sini sedikit lebih dari tiga puluh
find
contoh perintah untuk Anda mulai. Hampir setiap perintah diikuti dengan penjelasan singkat untuk menjelaskan perintah; lain dijelaskan lebih lengkap di URL ditampilkan:dasar 'menemukan file' perintah -------------------------- find / -name foo.txt -type f -print # perintah penuh find / -name foo.txt -type f # -print tidak diperlukan find / -name foo.txt # tidak harus menentukan "jenis == file" menemukan. -name foo.txt # pencarian di bawah dir saat ini menemukan. -Nama "foo. *" # wildcard menemukan. -name "* .txt" # wildcard menemukan / pengguna / al -nama Cookbook -type d # pencari '/ pengguna / al' dir mencari beberapa dirs -------------------- menemukan / opt / usr / var -nama foo.scala -type f # pencarian beberapa dirs case-insensitive pencarian -------------------------- menemukan. -iname foo # menemukan foo, Foo, FOO, FOO, dll menemukan. -iname foo -type d # hal yang sama, tetapi hanya dirs menemukan. -iname foo -type f # hal yang sama, tetapi hanya file menemukan file dengan ekstensi yang berbeda ------------------------------------ menemukan. -type f \ (-name "* c" -o -name "* sh" \) # * c dan * file sh menemukan. -type f \ (-name "* cache" -o -name "* xml" -o -name "* html" \) # tiga pola menemukan file yang tidak cocok pola (-tidak) -------------------------------------------- menemukan. -type f -tidak -name "* .html" # menemukan semua file tidak berakhiran ".html" menemukan file dengan teks dalam file (menemukan + grep) -------------------------------------------- menemukan. -type f -name "* .java" grep -exec l StringBuffer {} \; # Menemukan StringBuffer di semua file * .java menemukan. -type f -name "* .java" exec grep -Il tali {} \; # Abaikan dengan opsi -i menemukan. -type f -name "* .gz" exec zgrep 'GET / foo' {} \; # Mencari string dalam file gzip'd 5 baris sebelum, 10 baris setelah pertandingan grep ------------------------------------------- menemukan. -type f -name "* .scala" exec grep -B5 -A10 'nol' {} \; (Lihat http://alvinalexander.com/linux-unix/find-grep-print-lines-before-after-search-term) menemukan file dan bertindak atas mereka (menemukan + exec) ---------------------------------------- menemukan / usr / -name lokal "* .html" type f-exec chmod 644 {} \; # Perubahan html file ke modus 644 menemukan htdocs cgi-bin -name "* .cgi" type f-exec chmod 755 {} \; # Perubahan cgi file ke modus 755 menemukan. -name "* .pl" exec ls -ld {} \; # Run ls perintah pada file yang ditemukan mencari dan menyalin ------------- menemukan. -type f -name "* .mp3" cp-exec {} / tmp / MusicFiles \; # Cp * .mp3 file ke / tmp / MusicFiles menyalin satu file ke banyak dirs -------------------------- menemukan dir1 dir2 dir3 dir4 -type d -exec cp header.shtml {} \; # Menyalin header.shtml berkas kepada mereka dirs menemukan dan menghapus --------------- menemukan. -type f -name "Foo *" rm-exec {} \; # Menghapus semua "Foo *" file di bawah dir saat ini menemukan. -type d -name CVS-exec rm-r {} \; # Menghapus semua subdirektori bernama "CVS" di bawah dir saat ini menemukan file dengan waktu modifikasi ------------------------------- menemukan. -mtime 1 # 24 jam menemukan. -mtime -7 # 7 hari terakhir menemukan. -mtime -7 -type f # hanya file menemukan. -mtime -7 -type d # hanya dirs menemukan file dengan waktu modifikasi menggunakan file temp ------------------------------------------------- menyentuh 09301330 kotoran # 1) membuat file temporer dengan timestamp tertentu menemukan. -mnewer kotoran # 2) mengembalikan daftar file baru rm kotoran # 3) rm temp file menemukan dengan waktu: ini bekerja di mac os x -------------------------------------- menemukan / -newerct '1 menit yang lalu' -print menemukan dan tar ------------ menemukan. -type f -name "* .java" | xargs tar cvf myfile.tar menemukan. -type f -name "* .java" | xargs tar RVF myfile.tar (Lihat http://alvinalexander.com/blog/post/linux-unix/using-find-xargs-tar-create-huge-archive-cygwin-linux-unix untuk informasi lebih lanjut) menemukan, tar, dan xargs -------------------- menemukan. -name -type f '* .mp3' -mtime -180 -print0 | xargs -0 tar RVF music.tar (-print0 membantu ruang pegangan dalam nama file) (Lihat http://alvinalexander.com/mac-os-x/mac-backup-filename-directories-spaces-find-tar-xargs) menemukan dan pax (bukan xargs dan tar) --------------------------------------- menemukan. -type f -name "* html" | xargs tar cvf jw-htmlfiles.tar - menemukan. -type f -name "* html" | pax w -f jw-htmlfiles.tar (Lihat http://alvinalexander.com/blog/post/linux-unix/using-pax-instead-of-tar)
Pada catatan terkait, jangan lupa yang
locate
perintah . Ini membuat database pada sistem Unix / Linux Anda untuk membantu menemukan file sangat cepat:perintah locate -------------- menemukan tomcat.sh # mencari seluruh filesystem untuk 'tomcat.sh' (menggunakan locate database) menemukan -i spring.jar # case-insensitive pencarian
Jika Anda mengetahui lebih baik
find
perintah untuk berbagi, silakan tinggalkan catatan di bagian Komentar di bawah ini.
Bagian yang tersisa di halaman ini menjelaskan lebih lengkap perintah hanya ditampilkan.
contoh perintah find dasar
Linux pertama ini
find
contoh pencarian melalui filesystem root ( "/") untuk file bernama chapter1 . Jika menemukan file tersebut, ia mencetak lokasi ke layar.find / -name chapter1 -type f -print
Pada sistem Linux dan sistem Unix modern Anda tidak lagi membutuhkan
-print
pilihan pada akhir find
perintah, sehingga Anda dapat mengeluarkan seperti ini:find / -name chapter1 -type f
The
-type f
pilihan di sini mengatakan perintah find untuk kembali hanya file . Jika Anda tidak menggunakannya, find
perintah akan mengembalikan file, direktori, dan hal-hal lain seperti pipa bernama dan perangkat file yang cocok dengan pola nama yang Anda tentukan. Jika Anda tidak peduli tentang itu, hanya meninggalkan -type f
opsi off perintah Anda.
Ini selanjutnya
find
penelusuran perintah melalui hanya usr / dan / homedirektori untuk setiap file bernama Chapter1.txt :menemukan / usr / home -name Chapter1.txt -type f
Untuk mencari di direktori saat ini - dan semua subdirektori - hanya menggunakan
.
karakter untuk referensi direktori saat ini di Anda find
perintah, seperti ini:menemukan. -name chapter1 -type f
Contoh berikutnya pencarian melalui / usr direktori untuk semua file yang dimulai dengan huruf Bab , diikuti oleh hal lain. Nama file dapat berakhir dengan kombinasi lainnya karakter. Ini akan cocok nama file seperti Bab , chapter1 , Chapter1.bad , Bab-in-hidup , dll .:
menemukan / usr -name "Bab *" -type f
Ini pencarian perintah selanjutnya melalui / usr local / direktori untuk file yang diakhiri dengan ekstensi .html . Lokasi file-file ini kemudian dicetak ke layar:
menemukan / usr / local -name "* .html" -type f
Menemukan direktori dengan perintah find Unix
Setiap pilihan yang Anda hanya melihat untuk menemukan file juga dapat digunakan pada direktori. Hanya mengganti
-f
pilihan dengan -d
pilihan. Sebagai contoh, untuk menemukan semua direktori bernama membangundi bawah direktori saat ini, gunakan perintah ini:menemukan. -jenis d -Nama membangun
Menemukan file yang tidak cocok pola
Untuk menemukan semua file yang tidak cocok dengan pola nama file, menggunakan
-not
argumen dari perintah find, seperti ini:menemukan. -type f -tidak -name "* .html"
Yang menghasilkan daftar semua file di bawah direktori saat ini yang nama file TIDAK berakhir di html , sehingga cocok file seperti * .txt , * .jpg , dan sebagainya.
Menemukan file yang berisi teks (menemukan + grep)
Anda dapat menggabungkan Linux menemukan dan grep perintah untuk kuat mencari string teks dalam banyak file.
Perintah selanjutnya ini menunjukkan bagaimana untuk menemukan semua file di bawah direktori saat ini yang berakhir dengan ekstensi
.java
, dan berisi karakter StringBuffer
. The -l
argumen ke grep
perintah mengatakan itu untuk hanya mencetak nama file di mana kecocokan ditemukan, bukannya mencetak semua pertandingan sendiri:menemukan. -type f -name "* .java" grep -exec l StringBuffer {} \;
(Mereka beberapa karakter terakhir yang diperlukan setiap kali Anda ingin
exec
perintah pada file yang ditemukan. Saya merasa terbantu untuk menganggap mereka sebagai tempat untuk setiap file yang ditemukan.)
Contoh berikutnya adalah serupa, tapi di sini saya menggunakan
-i
argumen untuk grep
perintah, mengatakan hal itu untuk mengabaikan kasus karakter string
, sehingga akan menemukan file yang berisi string
, String
, STRING
, dll .:menemukan. -type f -name "* .java" exec grep -Il tali {} \;
Bertindak pada file Anda menemukan (mencari + exec)
Perintah ini pencarian melalui
/usr/local
direktori untuk file yang berakhir dengan ekstensi .html
. Ketika file-file ini ditemukan, izin mereka berubah ke mode 644 (rw-r - r--).menemukan / usr / -name lokal "* .html" type f-exec chmod 644 {} \;
Ini menemukan pencarian perintah melalui
htdocs
dan cgi-bin
direktori untuk file yang berakhir dengan ekstensi .cgi
. Ketika file-file ini ditemukan, izin mereka berubah ke mode 755 (rwxr-xr-x). Contoh ini menunjukkan bahwa perintah find dapat dengan mudah mencari melalui beberapa sub-direktori ( htdocs , cgi-bin ) pada satu waktu:menemukan htdocs cgi-bin -name "* .cgi" type f-exec chmod 755 {} \;
Menjalankan perintah ls pada file Anda menemukan
Dari waktu ke waktu saya menjalankan perintah find dengan
ls
perintah sehingga saya bisa mendapatkan informasi rinci tentang file menempatkan perintah find. Untuk memulai, perintah menemukan ini akan menemukan semua * .pl file (file Perl) di bawah direktori saat ini:menemukan. -name "* .pl"
Dalam direktori saya saat ini, output dari perintah ini terlihat seperti ini:
./news/newsbot/old/3filter.pl ./news/newsbot/tokenParser.pl ./news/robonews/makeListOfNewsURLs.pl
Itu bagus, tapi bagaimana jika saya ingin melihat waktu modifikasi terakhir file tersebut, atau filesize mereka? Tidak masalah, saya hanya menambahkan
ls -ld
perintah untuk perintah find saya, seperti ini:menemukan. -name "* .pl" exec ls -ld {} \;
Hal ini menyebabkan output yang sangat berbeda ini:
-rwxrwxr-x 1 root root 2907 15 Juni 2002 ./news/newsbot/old/3filter.pl -rwxrwxr-x 1 root root 336 17 Juni 2002 ./news/newsbot/tokenParser.pl -rwxr-xr-x 1 root root 2371 17 Juni 2002 ./news/robonews/makeListOfNewsURLs.pl
The "l" bendera dari perintah ls memberitahu ls untuk memberikan "daftar panjang" dari setiap file, sementara bendera -d sangat berguna dalam hal ini; ia memberitahu ls untuk memberikan output yang sama untuk direktori. Biasanya jika Anda menggunakan perintah ls pada direktori, ls akan menampilkan isi dari direktori, tetapi jika Anda menggunakan opsi -d, Anda akan mendapatkan satu baris informasi, seperti yang ditunjukkan di atas.
Cari dan menghapus
Berhati-hatilah dengan ini dua perintah berikutnya. Jika Anda mengetik mereka dalam salah, atau membuat asumsi yang salah tentang apa yang Anda cari, Anda dapat menghapus banyak file sangat cepat. Pastikan Anda memiliki backup dan semua itu, Anda telah diperingatkan.
Berikut adalah cara untuk menemukan semua file di bawah direktori saat ini yang dimulai dengan huruf 'Foo' dan menghapusnya.
menemukan. -type f -name "Foo *" rm-exec {} \;
Yang satu ini bahkan lebih berbahaya. Ia menemukan semua direktori bernama CVS, dan menghapus mereka dan isinya. Sama seperti perintah sebelumnya, berhati-hatilah dengan perintah ini, itu berbahaya (!), Dan tidak direkomendasikan untuk pemula, atau jika Anda tidak memiliki cadangan.
menemukan. -type d -name CVS-exec rm-r {} \;
Cari file dengan ekstensi file yang berbeda
Sintaks untuk menemukan beberapa ekstensi nama file dengan satu perintah terlihat seperti ini:
menemukan. -type f \ (-name "* c" -o -name "* sh" \)
Hanya terus menambahkan lebih banyak "o" (atau) pilihan untuk setiap ekstensi nama file. Berikut adalah link untuk
berkas kasus-sensitif pencarian
Untuk melakukan pencarian case-insensitive dengan perintah find Unix / Linux, menggunakan -iname
pilihan bukan -name
. Misalnya, jika Anda ingin mencari semua file dan direktori bernama foo
, FOO
atau kombinasi lainnya karakter besar dan huruf kecil di bawah direktori saat ini, gunakan perintah ini:
menemukan. foo -iname
Jika Anda hanya tertarik pada direktori, mencari seperti ini:
menemukan. -iname foo -type d
Dan jika Anda hanya mencari file, cari seperti ini:
menemukan. -iname foo -type f
Cari file dengan waktu modifikasi
Untuk menemukan semua file dan direktori yang telah dimodifikasi dalam tujuh hari terakhir, menggunakan ini find
perintah:
menemukan. -mtime -7
Untuk membatasi output hanya file, tambahkan -type f
opsi seperti yang ditunjukkan sebelumnya:
menemukan. -mtime -7 -type f
dan untuk menunjukkan hanya direktori:
menemukan. -mtime -7 -type d
SEKIAN TERIMA KASIH.
SEKIAN SEMOGA BERMANFAAT.
1 comments so far
test dulu gan...
EmoticonEmoticon