GNU/Linux >> Belajar Linux >  >> Linux

Ayah, saya menemukannya!, 15 Contoh Perintah Temukan Linux yang Luar Biasa (Bagian2)

Beberapa waktu lalu kami meninjau 15 contoh perintah find praktis (Bagian I). Perintah Find dapat melakukan lebih dari sekadar mencari file berdasarkan nama.
 
Dalam artikel ini (Bagian 2), mari kita bahas 15 contoh lanjutan find command termasuk — menemukan file berdasarkan waktu diakses, dimodifikasi atau diubah, menemukan file secara komparatif, melakukan operasi pada file yang ditemukan, dll.,
 
Ramesh Natarajan: Itu adalah putri kecilku yang manis di foto itu. Dia sangat senang melihat singa laut di California Long Beach Aquarium.

Menemukan File Berdasarkan Akses / Modifikasi / Ubah Waktu

Anda dapat menemukan file berdasarkan tiga atribut waktu file berikut.

  1. Waktu akses dari file. Waktu akses diperbarui saat file diakses .
  2. Waktu modifikasi dari file. Waktu modifikasi diperbarui saat konten file diubah .
  3. Ubah waktu dari file. Waktu perubahan diperbarui saat data inode berubah .

 
Dalam contoh berikut, perbedaan antara opsi min dan opsi waktu adalah argumennya.

  • argumen minimal memperlakukan argumennya sebagai menit . Misalnya, min 60 =60 menit (1 jam).
  • argumen waktu memperlakukan argumennya sebagai 24 jam . Misalnya, waktu 2 =2*24 jam (2 hari).
  • Saat melakukan perhitungan 24 jam, bagian pecahan diabaikan sehingga 25 jam diambil sebagai 24 jam, dan 47 jam juga diambil sebagai 24 jam, hanya 48 jam diambil sebagai 48 jam. Untuk mendapatkan kejelasan lebih lanjut, rujuk bagian -atime dari perintah temukan halaman manual.

Contoh 1:Temukan file yang kontennya diperbarui dalam 1 jam terakhir

Untuk menemukan file berdasarkan waktu modifikasi konten, opsi -mmin, dan -mtime digunakan. Berikut adalah definisi mmin dan mtime dari halaman manual.

  • -mm n Data file terakhir diubah n menit lalu.
  • -mtime n Data file terakhir diubah n*24 jam lalu.

 
Contoh berikut akan menemukan file di direktori dan sub-direktori saat ini, yang isinya diperbarui dalam 1 jam (60 menit) terakhir

# find . -mmin -60

 
Dengan cara yang sama, contoh berikut menemukan semua file (di bawah sistem file root /) yang diperbarui dalam 24 jam terakhir (1 hari).

# find / -mtime -1

Contoh 2:Temukan file yang diakses sebelum 1 jam

Untuk menemukan file berdasarkan waktu akses file, opsi -amin, dan -atime digunakan. Berikut ini adalah definisi amin dan atime dari halaman manual find.

  • -amin n File terakhir diakses n menit lalu
  • -waktu dan File terakhir diakses n*24 jam lalu

 
Contoh berikut akan menemukan file di direktori dan sub-direktori saat ini, yang diakses dalam 1 jam (60 menit) terakhir

# find -amin -60

 
Dengan cara yang sama, contoh berikut menemukan semua file (di bawah sistem file root /) yang diakses dalam 24 jam terakhir (1 hari).

# find / -atime -1

Contoh 3:Temukan file yang diubah tepat sebelum 1 jam

Untuk menemukan file berdasarkan waktu perubahan inode file, opsi -cmin, dan -ctime digunakan. Berikut adalah definisi cmin dan ctime dari halaman manual find.

  • -cmin n Status file terakhir diubah n menit lalu.
  • -ctime n Status file terakhir diubah n*24 jam lalu.

 
Contoh berikut akan menemukan file di direktori dan sub-direktori saat ini, yang berubah dalam 1 jam (60 menit) terakhir

# find . -cmin -60

 
Dengan cara yang sama, contoh berikut menemukan semua file (di bawah sistem file root /) yang diubah dalam 24 jam terakhir (1 hari).

# find / -ctime -1

Contoh 4:Membatasi keluaran find hanya untuk file. (Hanya tampilkan file sebagai hasil perintah find)

Perintah find di atas juga akan menampilkan direktori karena direktori diakses ketika file di dalamnya diakses. Tetapi jika Anda hanya ingin file yang ditampilkan, maka berikan -ketik f pada perintah find as
 
Berikut perintah find menampilkan file yang diakses dalam 30 menit terakhir.

# find /etc/sysconfig -amin -30
.
./console
./network-scripts
./i18n
./rhn
./rhn/clientCaps.d
./networking
./networking/profiles
./networking/profiles/default
./networking/profiles/default/resolv.conf
./networking/profiles/default/hosts
./networking/devices
./apm-scripts
[Note: The above output contains both files and directories]

# find /etc/sysconfig -amin -30 -type f
./i18n
./networking/profiles/default/resolv.conf
./networking/profiles/default/hosts
[Note: The above output contains only files]

Contoh 5:Membatasi pencarian hanya untuk file yang tidak disembunyikan. (Jangan tampilkan file tersembunyi di hasil pencarian)

Jika kita tidak ingin file yang disembunyikan tercantum dalam output find, kita dapat menggunakan regex berikut.
Temukan di bawah ini menampilkan file yang dimodifikasi dalam 15 menit terakhir. Dan itu hanya mencantumkan file yang tidak disembunyikan. yaitu file tersembunyi yang dimulai dengan . (titik) tidak ditampilkan dalam output find.

# find . -mmin -15 \( ! -regex ".*/\..*" \)

Menemukan File Secara Relatif Menggunakan Perintah Temukan

Pikiran manusia dapat mengingat hal-hal lebih baik dengan referensi seperti, saya ingin mencari file yang saya edit setelah mengedit file "test". Anda dapat menemukan file dengan merujuk pada modifikasi file lainnya seperti berikut ini.

Contoh 6:Temukan file yang dimodifikasi setelah modifikasi FILE tertentu

Syntax: find -newer FILE

 
Contoh berikut menampilkan semua file yang dimodifikasi setelah file /etc/passwd dimodifikasi. Ini berguna, jika Anda ingin melacak semua aktivitas yang telah Anda lakukan setelah menambahkan pengguna baru.

# find -newer /etc/passwd

Contoh 7:Temukan file yang diakses setelah modifikasi FILE tertentu

Syntax: find -anewer FILE

 
Contoh berikut menampilkan semua file yang diakses setelah memodifikasi /etc/hosts. Jika Anda ingat menambahkan entri ke /etc/hosts dan ingin melihat semua file yang telah Anda akses sejak saat itu, gunakan perintah berikut.

# find -anewer /etc/hosts

Contoh 8:Temukan file yang statusnya diubah setelah modifikasi FILE tertentu.

Syntax: find -cnewer FILE

 
Contoh berikut menampilkan semua file yang statusnya diubah setelah memodifikasi file /etc/fstab. Jika Anda ingat menambahkan titik mount di /etc/fstab dan ingin mengetahui semua file yang statusnya diubah sejak saat itu, gunakan perintah berikut.

find -cnewer /etc/fstab

Lakukan Operasi Apapun pada File yang Ditemukan Dari Perintah Temukan

Kami telah melihat banyak cara berbeda untuk menemukan file menggunakan perintah find di artikel ini dan juga di artikel kami sebelumnya. Jika Anda tidak terbiasa menemukan file dengan cara yang berbeda, saya sangat menyarankan Anda untuk membaca bagian 1.
 
Bagian ini menjelaskan tentang cara melakukan operasi yang berbeda pada file dari perintah find. yaitu cara memanipulasi file yang dikembalikan oleh output perintah find.
 
Kita dapat menentukan operasi apapun pada file yang ditemukan dari perintah find.

find <CONDITION to Find files> -exec <OPERATION> \;

 
OPERASI dapat berupa:

  • perintah rm untuk menghapus file yang ditemukan dengan perintah find.
  • perintah mv untuk mengganti nama file yang ditemukan.
  • ls -l perintah untuk mendapatkan detail file keluaran perintah find.
  • md5sum saat menemukan file keluaran perintah
  • perintah wc untuk menghitung jumlah total kata pada file keluaran perintah find.
  • Jalankan perintah Unix shell apa saja pada file keluaran perintah find.
  • atau Jalankan skrip shell khusus Anda sendiri / perintah untuk menemukan file keluaran perintah.

Contoh 9:ls -l pada output perintah find. Daftar panjang file yang diedit dalam 1 jam terakhir.

# find -mmin -60
./cron
./secure

# find -mmin -60 -exec ls -l {} \;
-rw-------  1 root root 1028 Jun 21 15:01 ./cron
-rw-------  1 root root 831752 Jun 21 15:42 ./secure

Contoh 10:Hanya Mencari di Sistem File Saat Ini

Administrator sistem ingin mencari di sistem file root, tetapi tidak di partisi lain yang dipasang. Ketika Anda memiliki beberapa partisi yang terpasang, dan jika Anda ingin mencari di /. Anda dapat melakukan hal berikut.
 
Perintah berikut akan mencari file *.log mulai dari /. yaitu Jika Anda memiliki beberapa partisi yang di-mount di bawah / (root), perintah berikut akan mencari semua partisi yang di-mount tersebut.

# find / -name "*.log"

 
Ini akan mencari file hanya di sistem file saat ini. Berikut adalah definisi xdev dari halaman manual find:

  • -xdev Jangan turun direktori di sistem file lain.

 
Perintah berikut akan mencari file *.log mulai dari / (root) dan hanya di sistem file saat ini. yaitu Jika Anda memiliki beberapa partisi yang di-mount di bawah / (root), perintah berikut TIDAK akan mencari semua partisi yang di-mount tersebut.

# find / -xdev -name "*.log"

Contoh 11:Menggunakan lebih dari satu { } dalam perintah yang sama

Manual mengatakan hanya satu instance {} yang mungkin. Namun Anda bisa menggunakan lebih dari satu {} dalam perintah yang sama seperti yang ditampilkan di bawah ini.

# find -name "*.txt" cp {} {}.bkup \;

 
Menggunakan {} ini dalam perintah yang sama dimungkinkan tetapi menggunakannya dalam perintah yang berbeda tidak mungkin, misalnya Anda ingin mengganti nama file sebagai berikut, yang tidak akan memberikan hasil yang diharapkan.

find -name "*.txt" -exec mv {} `basename {} .htm`.html \;

Contoh 12:Menggunakan { } di lebih dari satu instance.

Anda dapat mensimulasikannya dengan menulis skrip shell seperti yang ditunjukkan di bawah ini.

# mv "$1" "`basename "$1" .htm`.html"

 
Kutipan ganda ini untuk menangani spasi dalam nama file. Dan kemudian panggil skrip shell itu dari find command seperti yang ditunjukkan di bawah ini.

find -name "*.html" -exec ./mv.sh '{}' \;

Jadi untuk alasan apa pun jika Anda ingin nama file yang sama digunakan lebih dari sekali, maka menulis skrip shell sederhana dan meneruskan nama file sebagai argumen adalah cara paling sederhana untuk melakukannya.

Contoh 13:Mengalihkan kesalahan ke /dev/null

Mengarahkan kesalahan bukanlah praktik yang baik. Pengguna yang berpengalaman memahami pentingnya mencetak kesalahan di terminal dan memperbaikinya.
 
Khususnya dalam perintah find yang mengarahkan kesalahan bukanlah praktik yang baik. Tetapi jika Anda tidak ingin melihat kesalahan dan ingin mengarahkannya ke nol, lakukan seperti yang ditunjukkan di bawah ini.

find -name "*.txt" 2>>/dev/null

 
Terkadang ini bisa membantu. Misalnya, jika Anda mencoba menemukan semua file *.conf di bawah / (root) dari akun Anda, Anda mungkin mendapatkan banyak pesan kesalahan “Permission ditolak” seperti yang ditunjukkan di bawah ini.

$ find / -name "*.conf"
/sbin/generate-modprobe.conf
find: /tmp/orbit-root: Permission denied
find: /tmp/ssh-gccBMp5019: Permission denied
find: /tmp/keyring-5iqiGo: Permission denied
find: /var/log/httpd: Permission denied
find: /var/log/ppp: Permission denied
/boot/grub/grub.conf
find: /var/log/audit: Permission denied
find: /var/log/squid: Permission denied
find: /var/log/samba: Permission denied
find: /var/cache/alchemist/printconf.rpm/wm: Permission denied
[Note: There are two valid *.conf files burned in the "Permission denied" messages]

 
Jadi, jika Anda hanya ingin melihat output sebenarnya dari perintah find dan bukan pesan kesalahan "Izin ditolak" Anda dapat mengarahkan pesan kesalahan ke /dev/null seperti yang ditunjukkan di bawah ini.

$ find / -name "*.conf" 2>>/dev/null
/sbin/generate-modprobe.conf
/boot/grub/grub.conf
[Note: All the "Permission denied" messages are not displayed]

Contoh 14:Ganti spasi dengan garis bawah pada nama file.

File audio yang Anda unduh dari internet sebagian besar dilengkapi dengan spasi di dalamnya. Tetapi memiliki ruang dalam nama file tidak begitu baik untuk jenis sistem Linux. Anda dapat menggunakan kombinasi perintah find dan rename seperti yang ditunjukkan di bawah ini untuk mengganti nama file, dengan mengganti spasi dengan garis bawah.
 
Berikut ini menggantikan spasi di semua file *.mp3 dengan _

$ find . -type f -iname “*.mp3″ -exec rename “s/ /_/g” {} \;

Contoh 15:Menjalankan dua perintah find secara bersamaan

Seperti yang ditunjukkan pada contoh perintah find di halaman manualnya, berikut adalah sintaks yang dapat digunakan untuk mengeksekusi dua perintah dalam satu traversal.
 
Contoh perintah find berikut, jelajahi sistem file sekali saja, daftarkan file setuid dan direktori ke /root/suid.txt dan file besar ke /root/big.txt.

# find /    \( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \
 \( -size +100M -fprintf /root/big.txt '%-10s %p\n' \)

15 Contoh Artikel Seri Lainnya

  • 15 Contoh Perintah Temukan Unix Praktis – Bagian 1
  • 15 Contoh Perintah Linux Grep Praktis
  • Sejarah Baris Perintah Master Unix Dengan 15 Contoh
  • Manipulasi File Audio Menggunakan 15 Contoh Perintah Sox yang Luar Biasa (Sound eXchange)
  • 15 Contoh Perintah PostgreSQL Tingkat Lanjut
  • 15 Peretasan, Kiat, dan Trik Penelusuran Google yang Luar Biasa
  • 15 Contoh DBA PostgreSQL Lanjutan
  • 15 Contoh Penggunaan Praktis Perintah Mysqladmin
  • 15 Contoh Pekerjaan Cron Linux yang Luar Biasa

 
Jika Anda perlu kembali, tandai halaman ini di del.icio.us untuk referensi praktis.


Linux
  1. 5 Alat Baris Perintah untuk Menemukan File dengan Cepat di Linux

  2. 25 Berguna menemukan Contoh Praktis Perintah di Linux

  3. Menggunakan perintah find Linux – Penggunaan dengan contoh

  1. Contoh Praktis Perintah rsync di Linux

  2. 25 contoh sederhana perintah find Linux

  3. Contoh Perintah diff di Linux

  1. 20 Contoh Perintah Nmap yang Luar Biasa di Linux

  2. Temukan Perintah di Linux (Temukan File dan Direktori)

  3. temukan Contoh Perintah di Linux