GNU/Linux >> Belajar Linux >  >> Linux

Cara menemukan dan membuat daftar file berdasarkan tanggal secara rekursif di Linux

Alasan utama sebagian besar pengguna sistem operasi memilih Linux daripada sistem operasi lain adalah kebebasan untuk menjelajah. Dengan Linux, Anda terikat pada beberapa aturan sistem operasi yang digabungkan secara longgar. OS menetapkan beberapa aturan standar yang dapat diubah untuk digunakan dalam lingkungannya.

Setelah Anda melepaskan mantel pemula, Anda bisa keluar dari aturan default ini dan membuat aturan Anda sendiri. Di Linux, sistem operasi adalah pelayan setia Anda dan Anda tuannya.

Kasus ini tidak dapat dijalankan di distribusi sistem operasi lain karena terlalu banyak abstraksi yang ada. Sistem operasi di sini lebih merupakan asisten Anda. Anda tidak akan pernah memiliki kekuatan lebih dari sistem operasi, seperti halnya Linux. Saat Anda terus membangun pengalaman pengguna Anda di bawah lingkungan OS Linux, rasa ingin tahu OS Anda akan tumbuh setiap hari. Anda akan selalu ingin tahu apa yang tersembunyi di sini dan apa lagi yang dapat Anda lakukan di bawah payungnya.

Bekerja dengan file dan direktori di Linux

Skenario kasus yang sempurna adalah interaksi harian Anda dengan file dan folder di bawah lingkungan sistem operasi Linux. Ada lebih banyak untuk menggunakan sistem file OS Linux daripada hanya membuat, mengedit, memodifikasi, dan menghapus sistem file dan folder pengguna. Setiap tindakan yang terkait dengan file dan folder/direktori pengguna di lingkungan Linux meninggalkan jejak atau sidik jari pengguna. Ini seperti berjalan ke ruangan untuk menyentuh dan menukar barang.

Jika pemilik atau pengelola Linux mengelola ruangan yang Anda masuki ini, ia akan tahu persis apa yang Anda lakukan dan item mana yang Anda sentuh atau tukar. Linux memiliki perintah yang berguna untuk membantu kita mencapai hasil seperti itu. Anda akan mengetahui apa yang terjadi pada file dan folder di OS Linux Anda dan mengidentifikasi tindakan ini berdasarkan waktu terjadinya.

Singkatnya, ketika berurusan dengan file dan direktori di bawah lingkungan sistem operasi Linux, kita dapat membuat timeline peristiwa untuk mengidentifikasi modifikasi file yang rentan melalui stempel waktu yang dilampirkan pada setiap modifikasi. Sebagai keuntungan, Anda akan mengetahui apakah modifikasi tersebut terkait dengan konten berbahaya melalui log sistem yang dihasilkan.

Perintah Linux yang akan digunakan

Kami akan menyalurkan beberapa perintah sederhana untuk membantu kami memahami implikasi objektif dari bagian artikel ini. Anda harus terlebih dahulu meluncurkan terminal Anda dan menavigasi jalur sistem yang Anda tahu memiliki banyak direktori file dan folder. Agar aman dan tidak bermain-main dengan file sistem Anda yang rentan, Anda dapat menggunakan direktori "Dokumen" Anda yang biasanya telah ditentukan sebelumnya di sistem operasi Linux. Perintah berikut akan membawa Anda ke direktori "Dokumen" ini.

$ cd ~/Documents

Ini adalah direktori populer dengan banyak file dan sub-direktori. Direktori lain yang digunakan untuk percobaan artikel ini adalah direktori “Unduhan”. Ini adalah satu tempat Anda tidak akan pernah melewatkan file yang diunduh dan sub-direktori lainnya.

$ cd ~/Downloads

Untuk memulai percobaan ini, kami memerlukan beberapa keluaran sampel yang dapat dihubungkan dari terminal kami. Kami akan memasukkan string perintah di terminal kami yang akan memungkinkan kami untuk membuat daftar file aktif dan subdirektori terkait. Selain itu, setiap elemen output yang dihasilkan dari perintah ini akan ditautkan dengan stempel waktu yang menunjukkan upaya modifikasi terakhir pada file, direktori, atau subdirektori terkait.

String perintah yang akan digunakan adalah sebagai berikut:

$ find . -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d' ' -f2-

Tangkapan layar di bawah ini adalah output untuk menggunakan string perintah di atas.

Dari sudut pandang analitis, layar bawah dari output perintah mewakili item yang baru saja dimodifikasi di direktori kerja induk Anda. Daftar keluaran bisa panjang, tergantung pada file dan folder yang Anda miliki di mesin Anda. Menggulir ke atas pada terminal keluaran mengungkapkan file lama dan modifikasi folder. Singkatnya, kami memiliki output yang mengurutkan modifikasi file dan folder terlama hingga modifikasi terbaru.

Seperti yang Anda perhatikan, string perintah di atas yang Anda tempel di terminal Anda memiliki tiga argumen perintah penting. Kita perlu memahami apa yang mereka lakukan masing-masing.

Temukan

Perintah "find" adalah yang pertama dijalankan dari string perintah. Ini memiliki satu-satunya tujuan untuk secara rekursif mendaftar file dan direktori aktif di direktori kerja induk Anda. "." argumen yang mengikuti argumen "find" mengarahkan perintah ini ke direktori kerja saat ini. Jika Anda tidak yakin dengan direktori tempat Anda berada; Anda dapat memasukkan perintah "pwd" di terminal Anda. Ini akan mencetak jalur ke direktori tempat Anda berada saat ini.

"." argumen diterjemahkan sebagai output dari perintah "pwd". Itu membuatnya lebih mudah untuk menemukan file dan direktori dari direktori kerja Anda saat ini. Argumen berikutnya pada string perintah adalah "-printf". Ini adalah bendera untuk argumen cetak. Ini mencetak file dan direktori pada direktori kerja Anda saat ini dalam format tertentu. Format yang dibutuhkan ditentukan oleh argumen “%T@%t%p\n”. Ini adalah argumen perintah yang segera mengikutinya.

Bagian '%T@' dari argumen ini mewakili waktu epoch. Menurut definisi, epoch time atau Unix epoch adalah stempel waktu pada 1 Januari 1970. Ini direpresentasikan sebagai 00:00:00 UTC. Output pada terminal Anda menggunakan format ini untuk mewakili tanggal modifikasi yang terkait dengan file dan direktori yang terdaftar. Bagian '%t' dari argumen sekarang mengambil format waktu epoch untuk menampilkan stempel waktu modifikasi terbaru yang terkait dengan file dan direktori yang terdaftar.

Tergantung pada distro atau rasa Linux Anda, output terminal mungkin tidak menampilkan waktu epoch yang terkait dengan daftar output dari file yang dimodifikasi. Pernyataan ini adalah bukti output dari saya.

Bagian '%p' dari argumen menampilkan nama file yang ditampilkan pada direktori kerja saat ini. Akhirnya, bagian '/ n' dari argumen berfungsi untuk karakter baris baru. Setelah setiap daftar berturut-turut dari file yang dimodifikasi, karakter baris baru ini mengambil kursor tampilan dan melompati tampilan file berikutnya ke baris baru di layar terminal. Ini memudahkan kami untuk mengaitkan setiap file yang ditampilkan secara berbeda.

Pendekatan lain untuk bekerja dengan string perintah yang dinyatakan sebelumnya adalah mengganti bagian '%t' dari argumen "%T@%t%p\n" dengan '%c'. String perintah yang dihasilkan akan terlihat seperti berikut:

$ find . -printf '%T@ %c %p\n' | sort -k 1 -n | cut -d' ' -f2-

Keluaran dari menjalankan string perintah ini akan menghasilkan keluaran yang mirip dengan tangkapan layar berikut.

Mengamati tangkapan layar di atas dengan tajam mengungkapkan pengamatan berikut. Daftar keluaran file pada direktori kerja saat ini ditampilkan dengan "waktu perubahan status terakhir" alih-alih "waktu modifikasi". Ini adalah efek dari mengganti '%c' dengan '%t' di “%T@%t%p\n”. Perintah terakhir ini mencetak perubahan izin yang terkait dengan daftar file yang dikeluarkan. Konten file mungkin tidak berubah, tetapi metadata yang terkait dengannya berubah.

Pada tahap ini, hasil keluaran tidak mengikuti urutan kronologis karena kita belum membahas perintah sortir. Stempel waktu modifikasi pertama kali dicetak, diikuti dengan nama file terkait.

Urutkan

Argumen perintah ini memiliki tiga parameter, yaitu ‘-k’, ‘1’, dan ‘n’. Perintah sort bertanggung jawab atas urutan di mana output daftar file muncul di layar kita. Dalam hal ini, tanggal modifikasi dicetak terlebih dahulu, diikuti dengan jalur file ke file atau direktori yang dimodifikasi. Bagian '-k' dari argumen perintah ini menunjukkan posisi awal untuk memulai proses penyortiran.

Bagian '-k' dari argumen perintah sortir memiliki pertanyaan yang dijawab oleh bagian '1' dari argumen yang sama. Dalam hal ini, proses pengurutan dimulai dari kolom pertama seperti yang ditunjukkan oleh '1'. Argumen perintah sortir juga bertanggung jawab atas file modifikasi terbaru berada di bagian bawah daftar dan yang terlama di bagian atas. Bagian '-n' dari argumen bertanggung jawab untuk numerik waktu dengan presisi titik desimal.

Jika Anda menggunakan '-nr' alih-alih '-n', output dari string perintah akan memiliki file dan direktori yang baru dimodifikasi di atas output terminal dan modifikasi file lama di bagian bawah. Ini membalikkan urutan penyortiran output terminal.

Potong

Tujuan utama dari argumen perintah "cut" adalah untuk mengatur output dari cetakan terminal kita dengan rapi. Opsi '-d' dan ' ' dari argumen perintah ini digabungkan untuk menghasilkan spasi putih dan kemudian memotong cetakan detail konten file yang mungkin mencoba menggantikan spasi putih ini.

Dengan string perintah sederhana ini, Anda dapat mencetak file secara rekursif pada direktori kerja Anda saat ini, dengan setiap output menautkan file tersebut ke tanggal modifikasinya.

Opsi perintah alternatif

Anda mungkin berpendapat bahwa perintah "ls -lrt" dengan sempurna mencantumkan semua file dalam jalur direktori aktif di sistem operasi Linux Anda, dari yang terlama hingga yang terbaru. Di sisi lain, perintah ini tidak mempertimbangkan konten file yang ada di subfolder. Jika membuat daftar subdirektori bukan tujuan Anda, Anda dapat menambahkan argumen “-type f” ke string perintah. Pertimbangkan modifikasi perintah berikut.

$ find . -type f -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d ' ' -f2-

Menggunakan argumen perintah “-type d” akan memiliki efek yang berlawanan dengan perintah di atas. Terminal Anda hanya akan menampilkan direktori yang dimodifikasi dari yang terlama hingga yang terbaru. Perhatikan implikasinya sebagai berikut:

$ find . -type d -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d ' ' -f2-

Catatan akhir

Anda sekarang sudah terbiasa dengan panduan pencetakan file dan direktori secara rekursif di direktori kerja Anda saat ini dengan pengetahuan tambahan untuk mengetahui kapan terakhir diubah berdasarkan stempel waktu yang terkait.

Dari pengetahuan ini, Anda memiliki kemampuan untuk menyusun garis waktu peristiwa yang secara kronologis mengungkapkan urutan modifikasi file dan direktori bersama dengan jalur ke lokasi penyimpanannya.


Linux
  1. Cara Menemukan dan Mengurutkan File Berdasarkan Tanggal dan Waktu Modifikasi di Linux

  2. Cara Mencari dan Menghapus Direktori Secara Rekursif di Linux

  3. Temukan file dan direktori terbesar di Linux

  1. Cara Menggunakan Perintah find Linux untuk Menemukan File

  2. Cara mendaftar semua file dan direktori secara rekursif

  3. Bagaimana cara membuat daftar file secara rekursif dan mengurutkannya berdasarkan waktu modifikasi?

  1. Linux – Mendapatkan File Untuk Tanggal Saat Ini Di Linux?

  2. Bagaimana menemukan semua file yang jarang di Linux

  3. Bagaimana cara mendaftar semua file partisi di linux?