GNU/Linux >> Znalost Linux >  >> Linux

Jak odstranit více složek současně?

Pro případ, že byste chtěli udělat víc, než jen paralelně odstraňovat adresáře, můžete s GNU paralelně dělat spoustu zajímavých věcí. Protože to často není základní utilita v distribucích, možná ji budete muset nainstalovat pomocí svého oblíbeného správce balíčků, např. apt-get install parallel .

Ale pak můžete dělat skvělé věci, jako je tato, řekněme, že spustíte 4 paralelní procesy, chcete ukázat průběh, žádné otravné upozornění a necháte paralelně spustit příkaz spánku čekající na každý 5 s, 10 s, 15 s, 20 s.

$ 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  

Váš příklad by fungoval takto:

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

Neváhejte a podívejte se na skvělý tutoriál.


Musel jsem co nejrychleji vyčistit některé složky v /media.
Následující příkaz dokázal smazat 9T dat na každém z 80 disků za zhruba 5 minut

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

Toto koplo 80 paralelních rm -rf na pozadí


Spusťte příkazy na pozadí

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

syntaxe

long_command with arguments > redirection &

můžete zachytit jakékoli zprávy přesměrováním výstupu příkazu do souboru.

Tyto odkazy vám pomohou ==> http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

Upravit:

Název otázky a uvedený příklad působí dojmem, že problém je velmi malý. Ale přidaná odměna ukazuje závažnost problému.

Bylo by lepší, kdybyste specifikovali povahu vašich souborů. Poskytuji však nějaké mazání založené na rozdělení, které lze implementovat jako paralelní provádění Můžete vyzkoušet níže uvedené možnosti na základě vašeho požadavku.

  • mazání souborů podle velikosti
  • find /yourpath/folder1 -size +1048576 -exec rm -f {} \; &
    find /yourpath/folder2 -size +1048576 -exec rm -f {} \; &
    

  • mazání souborů podle přípony
  • vyhledejte rozšíření pomocí níže uvedeného příkazu
    ls -l /yourpath/folder1 | awk '{print $9}' | awk -F. '{print $(NF)}' |sort |uniq
    

    můžete získat výsledek jako

    .txt
    .log
    .tmp
    .zip
    

    nyní odstraňte soubory založené na příponách

    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 {} \; &
    

  • mazání souborů podle času změny
  • níže uvedený příkaz se pokusí smazat soubory starší než 5 dní.
    find yourpath/folder1 -mtime +5 -exec rm {} \;
    

    NEBO

    find yourpath/folder2 -mtime +5 |xargs rm 
    

  • odstranění složky a jejích podsložek včetně jejích souborů
  • find foldername -exec rm -rf {} \; &
    


    Linux
    1. Jak přejmenovat více souborů pomocí funkce Najít?

    2. Jak najít a odstranit prázdné adresáře a soubory v Linuxu

    3. Jak odstraním složky pomocí regex z terminálu Linux

    1. Jak najít a odstranit prázdné adresáře a soubory v Unixu

    2. Jak odstranit složky s určitým názvem

    3. Jak smazat soubor s tímto názvem na linuxu:-]???????q

    1. Jak mohu provést více příkazů při použití funkce find?

    2. Jak vypsat seznam složek pomocí příkazů bash?

    3. Jak odstranit soubor s podivným názvem?