Studi Kasus: Menyortir Berkas-berkas melalui Skrip Bash

Saya punya beberapa ratus berkas pdf yang terdiri dari tiga kategori Easy, Medium, dan Hard. Berkas-berkas ini punya nama kategorinya di nama berkas.

Saya ingin memindahkan tiap berkas ke folder yang sesuai dengan kategorinya.

Saya kepikiran untuk menggunakan for loop di skrip bash yang diikuti dengan if untuk menentukan apakah nama berkas memiliki kategori di atas lalu memindahkannya ke folder masing-masing.

Saya tidak ketemu solusi for loop dan if yang mumpuni, akhirnya ketemu solusi dengan perintah find dari sini https://unix.stackexchange.com/a/154819.

Perintah yang saya jalankan seperti ini.

find . -maxdepth 1 -name '*kategori*' -exec mv -t folder_kategori {} +

Ketiga varian perintah yang saya gunakan,

  1. find . -maxdepth 1 -name "*Hard*" -exec mv -t Hard {} +
  2. find . -maxdepth 1 -name "*Medium*" -exec mv -t Medium {} +
  3. find . -maxdepth 1 -name "*Easy*" -exec mv -t Easy {} +

Setelah ini setiap berkas akan masuk ke folder masing-masing. Cara kerja perintah di atas:

  1. . adalah tanda direktori sekarang
  2. -maxdepth 1 hanya mencari di direktori itu, tidak masuk ke direktori lain di dalamnya (rekursif).
  3. -name ‘*kategori*’ kata-kata target yang ada di nama berkas
  4. -exec mv -t folder_kategori pindahkan semua berkas yang menjadi argumennya ke dalam folder_kategori
  5. {} memiliki arti tiap berkas yang ditemukan akan dijadikan argumen ia dan
  6. + memiliki arti bahwa hasil pencarian sebagai argumennya ditambahkan terus menerus sampai tidak ada yang hasil pencarian yang sesuai (appending).

Contoh hasilnya seperti ini di folder Easy.

Semoga membantu!

Leave a Reply

avatar
  Subscribe  
Notify of