Tuesday, December 26, 2017

Koleksi 'mencari' contoh perintah Unix / Linux

Advertiser-1

Advertiser-2>
Linux / Unix FAQ: Dapatkah Anda berbagi beberapa Linuxmenemukan contoh perintah?
Yakin. Linux findperintah yang sangat kuat. Hal ini dapat mencari seluruh filesystem untuk menemukan file dan direktori sesuai dengan kriteria pencarian Anda tentukan. Selain menggunakan findperintah untuk mencari file, Anda juga dapat menggunakannya untuk mengeksekusi lainnya Linuxperintah ( grepmvrm, dll) pada file dan direktori Anda menemukan, yang membuat findbahkan lebih kuat.
Pada artikel ini saya akan melihat pada penggunaan yang paling umum dari findperintah.
(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 findcontoh 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 locateperintah . 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 findperintah 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 findcontoh 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 -printpilihan pada akhir findperintah, sehingga Anda dapat mengeluarkan seperti ini:
find / -name chapter1 -type f
The -type fpilihan di sini mengatakan perintah find untuk kembali hanya file . Jika Anda tidak menggunakannya, findperintah 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 fopsi off perintah Anda.
Ini selanjutnya findpenelusuran 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 findperintah, 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 -fpilihan dengan -dpilihan. 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 -notargumen 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 StringBufferThe -largumen ke grepperintah 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 execperintah 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 -iargumen untuk grepperintah, mengatakan hal itu untuk mengabaikan kasus karakter string, sehingga akan menemukan file yang berisi stringStringSTRING, dll .:
menemukan. -type f -name "* .java" exec grep -Il tali {} \;

Bertindak pada file Anda menemukan (mencari + exec)

Perintah ini pencarian melalui /usr/localdirektori untuk file yang berakhir dengan ekstensi .htmlKetika 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 htdocsdan cgi-bindirektori untuk file yang berakhir dengan ekstensi .cgiKetika 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 lsperintah 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 -ldperintah 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 -inamepilihan bukan -nameMisalnya, jika Anda ingin mencari semua file dan direktori bernama fooFOOatau 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 findperintah:
menemukan. -mtime -7
Untuk membatasi output hanya file, tambahkan -type fopsi 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