GNU/Linux >> Belajar Linux >  >> Linux

Ibu, aku menemukannya! — 15 Contoh Perintah Temukan Linux Praktis


Foto milik Qole Pejorian

Selain operasi dasar mencari file di bawah struktur direktori, Anda juga dapat melakukan beberapa operasi praktis menggunakan perintah find yang akan memudahkan perjalanan baris perintah Anda.

Pada artikel ini, mari kita tinjau 15 contoh praktis perintah find Linux yang akan sangat berguna bagi pemula dan ahli.


Pertama, buat contoh file kosong berikut di bawah direktori home Anda untuk mencoba beberapa contoh perintah find yang disebutkan di bawah.

# vim create_sample_files.sh
touch MybashProgram.sh
touch mycprogram.c
touch MyCProgram.c
touch Program.c

mkdir backup
cd backup

touch MybashProgram.sh
touch mycprogram.c
touch MyCProgram.c
touch Program.c

# chmod +x create_sample_files.sh

# ./create_sample_files.sh

# ls -R
.:
backup                  MybashProgram.sh  MyCProgram.c
create_sample_files.sh  mycprogram.c      Program.c

./backup:
MybashProgram.sh  mycprogram.c  MyCProgram.c  Program.c

1. Temukan File Menggunakan Nama

Ini adalah penggunaan dasar dari perintah find. Contoh ini menemukan semua file dengan nama — MyCProgram.c di direktori saat ini dan semua sub-direktorinya.

# find -name "MyCProgram.c"
./backup/MyCProgram.c
./MyCProgram.c

2. Temukan File Menggunakan Nama dan Mengabaikan Huruf

Ini adalah penggunaan dasar dari perintah find. Contoh ini menemukan semua file dengan nama — MyCProgram.c (mengabaikan huruf besar/kecil) di direktori saat ini dan semua sub-direktorinya.

# find -iname "MyCProgram.c"
./mycprogram.c
./backup/mycprogram.c
./backup/MyCProgram.c
./MyCProgram.c

3. Batasi Pencarian Untuk Tingkat Direktori Tertentu Menggunakan mindepth dan maxdepth

Temukan file passwd di bawah semua sub-direktori mulai dari direktori root.

# find / -name passwd
./usr/share/doc/nss_ldap-253/pam.d/passwd
./usr/bin/passwd
./etc/pam.d/passwd
./etc/passwd


Temukan file passwd di bawah root dan satu tingkat di bawah. (yaitu root — level 1, dan satu sub-direktori — level 2)

# find -maxdepth 2 -name passwd
./etc/passwd


Temukan file passwd di bawah root dan dua tingkat ke bawah. (yaitu root — level 1, dan dua sub-direktori — level 2 dan 3 )

# find / -maxdepth 3 -name passwd
./usr/bin/passwd
./etc/pam.d/passwd
./etc/passwd


Menemukan file password antara sub-direktori level 2 dan 4.

# find -mindepth 3 -maxdepth 5 -name passwd
./usr/bin/passwd
./etc/pam.d/passwd

4. Menjalankan Perintah pada File yang Ditemukan oleh Perintah Temukan.

Pada contoh di bawah, perintah find menghitung md5sum dari semua file dengan nama MyCProgram.c (mengabaikan huruf besar/kecil). {} diganti dengan nama file saat ini.

# find -iname "MyCProgram.c" -exec md5sum {} \;
d41d8cd98f00b204e9800998ecf8427e  ./mycprogram.c
d41d8cd98f00b204e9800998ecf8427e  ./backup/mycprogram.c
d41d8cd98f00b204e9800998ecf8427e  ./backup/MyCProgram.c
d41d8cd98f00b204e9800998ecf8427e  ./MyCProgram.c

5. Membalikkan kecocokan.

Menampilkan file atau direktori yang namanya bukan MyCProgram.c .Karena maxdepth adalah 1, ini hanya akan terlihat di bawah direktori saat ini.

# find -maxdepth 1 -not -iname "MyCProgram.c"
.
./MybashProgram.sh
./create_sample_files.sh
./backup
./Program.c

6. Menemukan File dengan Nomor inodenya.

Setiap file memiliki nomor inode yang unik, dengan itu kita dapat mengidentifikasi file tersebut. Buat dua file dengan nama yang mirip. yaitu satu file dengan spasi di akhir.

# touch "test-file-name"

# touch "test-file-name "
[Note: There is a space at the end]

# ls -1 test*
test-file-name
test-file-name


Dari output ls, Anda tidak dapat mengidentifikasi file mana yang memiliki spasi di akhir. Menggunakan opsi -i, Anda dapat melihat nomor inode file, yang akan berbeda untuk kedua file ini.

# ls -i1 test*
16187429 test-file-name
16187430 test-file-name


Anda dapat menentukan nomor inode pada perintah find seperti yang ditunjukkan di bawah ini. Dalam contoh ini, perintah find mengganti nama file menggunakan nomor inode.

# find -inum 16187430 -exec mv {} new-test-file-name \;

# ls -i1 *test*
16187430 new-test-file-name
16187429 test-file-name


Anda dapat menggunakan teknik ini ketika Anda ingin melakukan beberapa operasi dengan file yang diberi nama buruk seperti yang ditunjukkan pada contoh di bawah ini. Misalnya, file dengan nama — file?.txt memiliki karakter khusus di dalamnya. Jika Anda mencoba menjalankan “rm file?.txt”, ketiga file berikut akan dihapus. Jadi, ikuti langkah-langkah di bawah ini untuk menghapus hanya file “file?.txt”.

# ls
file1.txt  file2.txt  file?.txt


Temukan nomor inode setiap file.

# ls -i1
804178 file1.txt
804179 file2.txt
804180 file?.txt


Gunakan nomor inode untuk menghapus file yang memiliki karakter khusus seperti gambar di bawah ini.

# find -inum 804180 -exec rm {} \;

# ls
file1.txt  file2.txt
[Note: The file with name "file?.txt" is now removed]

7. Temukan file berdasarkan Izin File

Operasi berikut dimungkinkan.

  • Temukan file yang cocok dengan izin persisnya
  • Periksa apakah izin yang diberikan cocok, terlepas dari bit izin lainnya
  • Telusuri dengan memberikan representasi oktal/simbolis


Untuk contoh ini, mari kita asumsikan bahwa direktori tersebut berisi file-file berikut. Harap perhatikan bahwa izin file pada file ini berbeda.

# ls -l
total 0
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
---------- 1 root root 0 2009-02-19 20:31 no_for_all
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read


Menemukan file yang memiliki izin baca untuk dikelompokkan. Gunakan perintah berikut untuk menemukan semua file yang dapat dibaca oleh dunia di direktori home Anda, terlepas dari izin lain untuk file tersebut.

# find . -perm -g=r -type f -exec ls -l {} \;
-rw-r--r-- 1 root root 0 2009-02-19 20:30 ./everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 ./all_for_all
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read
-rw-r----- 1 root root 0 2009-02-19 20:27 ./others_can_also_read


Menemukan file yang memiliki izin baca hanya untuk grup.

# find . -perm g=r -type f -exec ls -l {} \;
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read


Menemukan file yang memiliki izin baca hanya untuk mengelompokkan [ search by octal ]

# find . -perm 040 -type f -exec ls -l {} \;
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read

8. Temukan semua file kosong (file nol byte) di direktori home Anda dan subdirektorinya

Sebagian besar file dari output perintah berikut akan menjadi file kunci dan penampung yang dibuat oleh aplikasi lain.

# find ~ -empty


Cantumkan semua file kosong hanya di direktori home Anda.

# find . -maxdepth 1 -empty


Hanya daftarkan file kosong yang tidak tersembunyi hanya di direktori saat ini.

# find . -maxdepth 1 -empty -not -name ".*"

9. Menemukan 5 File Besar Teratas

Perintah berikut akan menampilkan 5 file terbesar teratas di direktori saat ini dan subdirektorinya. Ini mungkin memerlukan beberapa saat untuk dieksekusi tergantung pada jumlah total file yang harus diproses oleh perintah.

# find . -type f -exec ls -s {} \; | sort -n -r | head -5

10. Menemukan 5 File Kecil Teratas

Tekniknya sama dengan mencari file yang lebih besar, tapi yang membedakan hanya urutannya secara ascending.

# find . -type f -exec ls -s {} \; | sort -n  | head -5


Pada perintah di atas, kemungkinan besar Anda hanya akan melihat file ZERO byte (file kosong). Jadi, Anda dapat menggunakan perintah berikut untuk membuat daftar file yang lebih kecil selain file byte ZERO.

# find . -not -empty -type f -exec ls -s {} \; | sort -n  | head -5

11. Temukan File Berdasarkan jenis file menggunakan opsi -type

Temukan hanya file soket.

# find . -type s


Temukan semua direktori

# find . -type d


Temukan hanya file biasa

# find . -type f


Temukan semua file tersembunyi

# find . -type f -name ".*"


Temukan semua direktori tersembunyi

# find -type d -name ".*"

12. Temukan file dengan membandingkan dengan waktu modifikasi file lain.

Tampilkan file yang dimodifikasi setelah file yang ditentukan. Perintah find berikut menampilkan semua file yang dibuat/dimodifikasi setelah file_biasa.

# ls -lrt
total 0
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
---------- 1 root root 0 2009-02-19 20:31 no_for_all

# find -newer ordinary_file
.
./everybody_read
./all_for_all
./no_for_all

13. Temukan File berdasarkan Ukuran

Menggunakan opsi -size Anda dapat menemukan file berdasarkan ukuran.

Menemukan file yang lebih besar dari ukuran yang diberikan

# find ~ -size +100M


Menemukan file yang lebih kecil dari ukuran yang diberikan

# find ~ -size -100M


Menemukan file yang sesuai dengan ukuran yang diberikan

# find ~ -size 100M


Catatan:– berarti lebih kecil dari ukuran yang diberikan, + berarti lebih dari ukuran yang diberikan, dan tidak ada simbol yang berarti ukuran yang diberikan tepat.

14. Buat Alias ​​​​untuk Operasi Pencarian Sering

Jika Anda menemukan sesuatu yang cukup berguna, maka Anda dapat menjadikannya sebagai alias. Dan jalankan kapan pun Anda mau.


Sering menghapus file bernama a.out.

# alias rmao="find . -iname a.out -exec rm {} \;"
# rmao


Hapus file inti yang dihasilkan oleh program c.

# alias rmc="find . -iname core -exec rm {} \;"
# rmc

15. Hapus file arsip besar menggunakan perintah find

Perintah berikut akan menghapus file *.zip yang melebihi 100 juta.

# find / -type f -name *.zip -size +100M -exec rm -i {} \;"

Hapus semua file *.tar yang melebihi 100M menggunakan alias rm100m (Hapus 100M). Gunakan konsep serupa dan buat alias seperti rm1g, rm2g, rm5g untuk menghapus ukuran file yang masing-masing lebih besar dari 1G, 2G, dan 5G.

# alias rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} \;"
# alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} \;"
# alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} \;"
# alias rm5g="find / -type f -name *.tar -size +5G -exec rm -i {} \;"

# rm100m
# rm1g
# rm2g
# rm5g

Temukan Contoh Perintah Bagian Kedua

Jika Anda menyukai artikel Mommy tentang perintah find ini, jangan lupa untuk membaca artikel Daddy tentang perintah find — Daddy, saya menemukannya!, 15 Contoh Perintah Find Linux yang Luar Biasa (Part2)

Artikel Linux yang Luar Biasa

Berikut adalah beberapa 15 contoh yang mengagumkan artikel yang mungkin bermanfaat bagi Anda.

  • 15 Contoh Untuk Menguasai Sejarah Baris Perintah Linux
  • Perintah Unix LS:15 Contoh Praktis
  • Dapatkan Pegangan di Grep! – 15 Contoh Perintah Grep Praktis
  • Linux Crontab:15 Contoh Pekerjaan Cron yang Luar Biasa

Linux
  1. 25 Berguna menemukan Contoh Praktis Perintah di Linux

  2. 5 Contoh Praktis Perintah dd di Linux

  3. 10 Contoh Perintah Linux nm Praktis

  1. Perintah cp di Linux:7 Contoh Praktis

  2. Perintah Shutdown Linux:5 Contoh Praktis

  3. temukan Contoh Perintah di Linux

  1. 16 Contoh Praktis perintah LS Linux untuk Pemula

  2. Linux Temukan Perintah dengan Contoh Praktis

  3. 5 Contoh Praktis Perintah "cd" di Linux