GNU/Linux >> Belajar Linux >  >> Linux

Temukan file dan direktori di Linux dengan perintah find

Terlepas dari seberapa terorganisir saya memutuskan untuk menjadi, tampaknya selalu ada saat-saat ketika saya tidak dapat menemukan file. Kadang-kadang karena saya tidak ingat nama file di tempat pertama. Di lain waktu, saya tahu namanya, tetapi saya tidak ingat di mana saya memutuskan untuk menyimpannya. Bahkan ada kalanya saya membutuhkan file yang tidak saya buat sejak awal. Namun, apa pun masalahnya, saya tahu bahwa pada sistem POSIX, saya selalu memiliki find perintah.

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Menginstal temukan

find perintah ditentukan oleh spesifikasi POSIX, yang menciptakan standar terbuka yang digunakan untuk mengukur sistem POSIX (termasuk Linux, BSD, dan macOS). Sederhananya, Anda sudah memiliki find diinstal selama Anda menjalankan Linux, BSD, atau macOS.

Namun, tidak semua find perintah yang persis sama. GNU find perintah, misalnya, memiliki fitur yang find BSD atau Busybox atau Solaris perintah mungkin tidak memiliki atau memang memiliki tetapi mengimplementasikan secara berbeda. Artikel ini menggunakan GNU find dari paket findutils karena sudah tersedia dan cukup populer. Sebagian besar perintah yang ditunjukkan dalam artikel ini berfungsi dengan implementasi find . lainnya , tetapi jika Anda mencoba perintah pada platform selain Linux dan mendapatkan hasil yang tidak diharapkan, coba unduh dan instal versi GNU.

Menemukan file berdasarkan nama

Anda dapat menemukan file berdasarkan nama filenya dengan memberikan nama file lengkap atau bagian dari nama file menggunakan ekspresi reguler. find perintah memerlukan jalur ke direktori yang ingin Anda cari, opsi untuk menentukan atribut apa yang Anda cari (misalnya, -name untuk nama file peka huruf besar/kecil), dan kemudian string pencarian. Secara default, string pencarian Anda diperlakukan secara harfiah:find perintah mencari nama file yang persis seperti string yang Anda masukkan di antara tanda kutip kecuali jika Anda menggunakan sintaks ekspresi reguler.

Asumsikan direktori Documents Anda berisi empat file:Foo , foo , foobar.txt , dan foo.xml . Berikut pencarian literal untuk file dengan nama "foo":

$ find ~ -name "foo"
/home/tux/Documents/examples/foo

Anda dapat memperluas pencarian Anda dengan membuatnya peka huruf besar/kecil dengan -iname pilihan:

$ find ~ -iname "foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo

Wildcard

Anda dapat menggunakan karakter wildcard shell dasar untuk memperluas pencarian Anda. Misalnya, tanda bintang (* ) mewakili sejumlah karakter:

$ find ~ -iname "foo*"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents /examples/foo.xml
/home/tux/Documents/examples/foobar.txt

Tanda tanya (? ) mewakili satu karakter:

$ find ~ -iname "foo*.???"
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

Ini bukan sintaks ekspresi reguler, jadi titik (. ) mewakili titik literal dalam contoh ini.

Ekspresi reguler

Anda juga dapat menggunakan ekspresi reguler. Seperti halnya -iname dan -name , ada opsi peka huruf besar/kecil dan tidak peka huruf besar/kecil. Berbeda dengan -name dan -iname pilihan, meskipun, -regex dan -iregex pencarian diterapkan ke seluruh jalur , bukan hanya nama file. Itu berarti jika Anda mencari foo , Anda tidak mendapatkan hasil karena foo tidak cocok dengan /home/tux/Documents/foo . Sebagai gantinya, Anda harus menelusuri seluruh jalur, atau menggunakan urutan karakter pengganti di awal string Anda:

$ find ~ -iregex ".*foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo

Menemukan file yang dimodifikasi dalam seminggu terakhir

Untuk menemukan file yang terakhir Anda modifikasi minggu lalu, gunakan -mtime opsi bersama dengan jumlah hari (negatif) di masa lalu:

$ find ~ -mtime -7
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents/examples /foo.xml
/home/tux/Documents/examples/foobar.txt

Temukan file yang dimodifikasi dalam rentang hari

Anda dapat menggabungkan -mtime pilihan untuk menemukan file dalam rentang hari. Untuk -mtime pertama argumen, berikan jumlah hari terbaru Anda dapat memodifikasi file, dan untuk yang kedua, berikan jumlah hari terbesar. Misalnya, pencarian ini mencari file dengan waktu modifikasi lebih dari satu hari di masa lalu, tetapi tidak lebih dari tujuh:

$ find ~ -mtime +1 -mtime -7 

Membatasi pencarian menurut jenis file

Mengoptimalkan hasil find adalah hal yang umum dengan menentukan jenis file yang Anda cari. Anda tidak boleh menggunakan opsi ini jika Anda tidak yakin apa yang Anda cari, tetapi jika Anda tahu Anda sedang mencari file dan bukan direktori, atau direktori tetapi bukan file, maka ini bisa menjadi pilihan yang bagus. filter untuk digunakan. Pilihannya adalah -type , dan argumennya adalah kode huruf yang mewakili beberapa jenis data yang berbeda. Yang paling umum adalah:

  • d - direktori
  • f - berkas
  • l - tautan simbolis
  • s - soket
  • p - pipa bernama (digunakan untuk FIFO)
  • b - blok khusus (biasanya penunjukan hard drive)

Berikut beberapa contohnya:

$ find ~ -type d -name "Doc*"
/home/tux/Documents
$ find ~ -type f -name "Doc*"
/home/tux/ Downloads/10th-Doctor.gif
$ find /dev -type b -name "sda*"
/dev/sda
/dev/sda1

Sesuaikan cakupan

find perintah adalah rekursif secara default, artinya ia mencari hasil di direktori direktori yang terdapat dalam direktori (dan seterusnya). Ini bisa menjadi luar biasa dalam sistem file besar, tetapi Anda dapat menggunakan -maxdepth opsi untuk mengontrol seberapa dalam ke dalam struktur folder yang ingin Anda find untuk turun:

$ find /usr -iname "*xml" | wc -l
15588
$ find /usr -maxdepth 2 -iname "*xml" | wc -l
15

Anda dapat mengatur kedalaman rekursi minimum secara bergantian dengan -mindepth :

$ find /usr -mindepth 8 -iname "*xml" | wc -l
9255

Unduh lembar contekan

Artikel ini hanya mencakup fungsi dasar find . Ini adalah alat yang hebat untuk mencari melalui sistem Anda, tetapi juga merupakan front-end yang sangat berguna untuk perintah Paralel yang kuat. Ada banyak alasan untuk mempelajari find , jadi unduh find gratis kami lembar contekan untuk membantu Anda mempelajari lebih lanjut tentang perintah tersebut.


Linux
  1. Salin dan tempel di baris perintah Linux dengan xclip

  2. Temukan File dan Direktori di Linux Seperti Profesional

  3. Cara Menghapus File dan Direktori di Linux dari Command Line

  1. Temukan file dan direktori terbesar di Linux

  2. Cara Menggunakan Perintah find Linux untuk Menemukan File

  3. temukan dan hapus file dengan ruang menggunakan perintah find di Linux

  1. Menggunakan perintah find Linux – Penggunaan dengan contoh

  2. Temukan File dengan Perintah Temukan dan Temukan di Linux

  3. Cara Menemukan File dengan Perintah fd di Linux