{"id":424,"date":"2024-08-11T13:07:00","date_gmt":"2024-08-11T06:07:00","guid":{"rendered":"https:\/\/ilmusekawan.web.id\/?p=424"},"modified":"2024-08-12T13:41:43","modified_gmt":"2024-08-12T06:41:43","slug":"cara-mengecualikan-file-dalam-operasi-file-rekursif-menggunakan-bash","status":"publish","type":"post","link":"https:\/\/ilmusekawan.web.id\/index.php\/2024\/08\/11\/cara-mengecualikan-file-dalam-operasi-file-rekursif-menggunakan-bash\/","title":{"rendered":"Cara Mengecualikan File Dalam Operasi File Rekursif Menggunakan BASH"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Bisa gak sih ngapus semua file di dalam direktori ini tapi file yang ini gak usah?<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Kalian pasti pernah mengalami situasi di mana kalian ingin menghapus semua file dalam sebuah direktori, tetapi ingin mengecualikan satu file di dalamnya. Untuk mencapai hal tersebut dengan file manager mungkin bukanlah hal yang sulit. Namun, bagaimana jika kita ingin melakukannya tanpa file manager? Hanya dengan perintah <code>rm<\/code> di terminal. Apakah itu mungkin? Tentu saja mungkin, dengan menggunakan extended glob di Bash.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Familiar kah kalian dengan extended glob di Bash? Ini adalah opsi bawaan di Bash yang memperluas kemampuan pencocokan glob. Dengan mengaktifkan opsi ini, kalian dapat mengecualikan file atau direktori tertentu dalam operasi file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Buat yang belum tau apasih glob itu? Glob dalam Bash adalah mekanisme yang digunakan untuk mencocokkan nama file atau direktori menggunakan pola tertentu. Pola ini biasanya melibatkan karakter wildcard seperti <code>*<\/code> (mewakili nol atau lebih karakter) dan <code>?<\/code> (mewakili satu karakter). Dengan glob, pengguna dapat dengan mudah memilih file atau direktori yang sesuai dengan kriteria tertentu tanpa harus menyebutkan nama lengkapnya.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tetapi opsi extended glob ini biasanya dalam keadaan nonaktif. Untuk mengeceknya bisa dengan menjalankan perintah di bawah<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ shopt extglob<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jika belum aktif, maka aktifkan dengan perintah<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ shopt -s extglob<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Catatan penting:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pengaktifan extended glob di atas bersifat sementara dan hanya berlaku untuk sesi terminal yang menjalankannya. Agar tetap aktif, kalian dapat menambahkan perintah di atas ke dalam file .bashrc.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Simulasi<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sebagai contoh, dalam satu direktori saya memiliki 5 buah file dan saya ingin menghapus semua file, kecuali file ke 5. Kita dapat menggunakan sintaks globing <code><em>!(pattern-list)<\/em><\/code> untuk menyelesaikan permasalahan tersebut.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ ls\nfile1  file2  file3  file4  file5<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$ rm -v !(file5)\nremoved 'file1'\nremoved 'file2'\nremoved 'file3'\nremoved 'file4'<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$ ls\nfile5<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sebagai contoh lain, dalam satu direktori saya memiliki beberapa file dengan extensi yang berbeda-beda. Saya ingin memindahkan semua file di dalam direktori tersebut kecuali file dengan extensi .txt ke direktori ~\/Documents.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ ls\nsome_file.txt  notes.txt  certificate.pdf  script.sh  image.jpg<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$ mv -v !(*.txt) ~\/Documents\/\nrenamed 'certificate.pdf' -&gt; '~\/Documents\/certificate.pdf'\nrenamed 'script.sh' -&gt; '~\/Documents\/script.sh'\nrenamed 'image.jpg' -&gt; '~\/Documents\/image.jpg'<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$ ls\nsome_file.txt  notes.txt<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Pranala Luar<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.gnu.org\/software\/bash\/manual\/html_node\/Pattern-Matching.html\">(BASH) Pattern Matching<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bisa gak sih ngapus semua file di dalam direktori ini tapi file yang ini gak usah? Kalian pasti pernah mengalami situasi di mana kalian ingin menghapus semua file dalam sebuah direktori, tetapi ingin mengecualikan satu file di dalamnya. Untuk mencapai hal tersebut dengan file manager mungkin bukanlah hal yang sulit&#8230;.<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"telegram_tosend":false,"telegram_tosend_message":"","telegram_tosend_target":0,"footnotes":""},"categories":[12,4],"tags":[59],"class_list":["post-424","post","type-post","status-publish","format-standard","hentry","category-linux","category-tips-trick","tag-bash"],"_links":{"self":[{"href":"https:\/\/ilmusekawan.web.id\/index.php\/wp-json\/wp\/v2\/posts\/424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ilmusekawan.web.id\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ilmusekawan.web.id\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ilmusekawan.web.id\/index.php\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/ilmusekawan.web.id\/index.php\/wp-json\/wp\/v2\/comments?post=424"}],"version-history":[{"count":17,"href":"https:\/\/ilmusekawan.web.id\/index.php\/wp-json\/wp\/v2\/posts\/424\/revisions"}],"predecessor-version":[{"id":441,"href":"https:\/\/ilmusekawan.web.id\/index.php\/wp-json\/wp\/v2\/posts\/424\/revisions\/441"}],"wp:attachment":[{"href":"https:\/\/ilmusekawan.web.id\/index.php\/wp-json\/wp\/v2\/media?parent=424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ilmusekawan.web.id\/index.php\/wp-json\/wp\/v2\/categories?post=424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ilmusekawan.web.id\/index.php\/wp-json\/wp\/v2\/tags?post=424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}