GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menghapus banyak folder secara paralel?

Jika Anda ingin melakukan lebih dari sekadar menghapus direktori secara paralel, Anda dapat melakukan banyak hal paralel dengan paralel GNU. Karena seringkali bukan utilitas dasar dalam distribusi, Anda mungkin perlu menginstalnya menggunakan pengelola paket favorit Anda, mis. apt-get install parallel .

Tapi kemudian, Anda dapat melakukan hal-hal keren seperti ini, katakanlah Anda menjalankan 4 proses paralel, ingin menunjukkan progresnya, tanpa pemberitahuan cerewet dan membiarkan secara paralel menjalankan perintah tidur menunggu masing-masing 5 detik, 10 detik, 15 detik, 20 detik.

$ parallel -j 4 --progress --no-notice sleep ::: 5 10 15 20 

Computers / CPU cores / Max jobs to run
1:local / 4 / 4

Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
local:0/4/100%/5.0s  

Contoh Anda akan berjalan seperti ini:

$ parallel --no-notice rm -rf ::: dir1 dir2 dir3 

Jangan ragu untuk berkonsultasi dengan tutorial yang bagus.


Saya harus membersihkan beberapa folder di /media secepat mungkin.
Perintah berikut dapat menghapus 9T data pada masing-masing dari 80 disk dalam waktu sekitar 5 menit

$ sudo find /media -maxdepth 2 -name "data-8" -type d | while read folder; do eval "sudo rm -rf ${folder} &"; done

Ini menendang 80 paralel rm -rf di latar belakang


Jalankan perintah di latar belakang

rm -rf dir &; rm -rf dir2 &;

sintaks

long_command with arguments > redirection &

Anda dapat menangkap pesan apa pun dengan mengarahkan keluaran perintah ke file.

Tautan ini akan membantu ==> http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

Sunting :

Judul pertanyaan &contoh yang diberikan memberikan kesan bahwa masalahnya sangat kecil. Namun hadiah tambahan menunjukkan keseriusan masalah tersebut.

Akan lebih baik jika Anda menentukan sifat file Anda. Namun, saya menyediakan beberapa penghapusan berbasis pemisahan yang dapat diterapkan sebagai eksekusi paralel. Anda dapat mencoba opsi di bawah berdasarkan kebutuhan Anda.

  • menghapus file berdasarkan ukuran
  • find /yourpath/folder1 -size +1048576 -exec rm -f {} \; &
    find /yourpath/folder2 -size +1048576 -exec rm -f {} \; &
    

  • menghapus file dengan ekstensi
  • temukan ekstensi dengan menggunakan perintah di bawah
    ls -l /yourpath/folder1 | awk '{print $9}' | awk -F. '{print $(NF)}' |sort |uniq
    

    Anda mungkin mendapatkan hasil seperti

    .txt
    .log
    .tmp
    .zip
    

    sekarang, hapus file berdasarkan ekstensi

    find yourpath/folder1 -name '*.txt' -exec rm {} \; &
    find yourpath/folder1 -name '*.tmp' -exec rm {} \; &
    find yourpath/folder1 -name '*.log' -exec rm {} \; &
    find yourpath/folder2 -name '*.txt' -exec rm {} \; &
    find yourpath/folder2 -name '*.tmp' -exec rm {} \; &
    find yourpath/folder2 -name '*.log' -exec rm {} \; &
    

  • menghapus file berdasarkan waktu yang diubah
  • perintah di bawah mencoba menghapus file yang lebih lama dari 5 hari.
    find yourpath/folder1 -mtime +5 -exec rm {} \;
    

    ATAU

    find yourpath/folder2 -mtime +5 |xargs rm 
    

  • menghapus folder &sub foldernya termasuk file-filenya
  • find foldername -exec rm -rf {} \; &
    


    Linux
    1. Bagaimana Cara Mengganti Nama Banyak File Menggunakan Find?

    2. Cara Menemukan dan Menghapus Direktori dan File Kosong di Linux

    3. Cara menghapus folder dengan nama tertentu

    1. Bagaimana Menemukan Banyak String Dalam File??

    2. Cara Menemukan dan Menghapus Direktori dan File Kosong di Unix

    3. Bagaimana cara menghapus folder menggunakan regex dari terminal Linux

    1. Bagaimana cara menghapus file dengan nama ini di linux:-]???????q

    2. Bagaimana cara menjalankan banyak perintah saat menggunakan find?

    3. Bagaimana cara mendaftar folder menggunakan perintah bash?