GNU/Linux >> Znalost Linux >  >> Ubuntu

Smazání záznamů, které jsou filtrovány při vytváření výstupu?

Mám adresář s hromadou smíšených přípon souborů a chtěl bych uvést konkrétní příponu souboru (možná něco jako grep *.mp3 ) a při výpisu je smažte s výstupem. Jak to mohu udělat nebo pokud dojde k podvodu, neváhejte mě označit.

Příklad:

grep "*.mp3" . | rm -fr 

Přijatá odpověď:

Začněme s adresářem se třemi mp3 soubory:

$ ls *mp3
a.mp3  b.mp3  c.mp3

Nyní je smažeme poté, co uvedeme, co mažeme:

$ find . -maxdepth 1 -name '*.mp3' -printf 'Deleting %p\n' -delete
Deleting ./a.mp3
Deleting ./b.mp3
Deleting ./c.mp3

Poté, co je hotovo, mp3 soubory jsou pryč:

$ ls *mp3
ls: cannot access '*mp3': No such file or directory

Jak to funguje

  • `najít .

    Tím se spustí find příkaz. Bude hledat soubory v aktuálním adresáři . .

  • -maxdepth 1

    Ve výchozím nastavení find rekurzivně prohledává podadresáře. To říká, že to nemá dělat. S -maxdepth 1 , příkaz find se podívá pouze na to, co najde v aktuálním adresáři, a neprozkoumá žádné podadresáře aktuálního adresáře.

  • -name '*.mp3'

    To říká find, aby hledal pouze soubory s .mp3 rozšíření.

  • -printf 'Deleting %p\n'

    To říká find, aby vytiskl zprávu o každém nalezeném souboru.

    Pokud chcete, můžete to samozřejmě změnit na jinou zprávu. Pokud zprávu nechcete, můžete tuto možnost zcela vynechat.

  • -delete

    To říká find, aby smazal každý soubor.

Vyhledávání bez rozlišení malých a velkých písmen

Pokud chcete také najít soubory s názvem .MP3 nebo .Mp3 atd., pak potřebujeme vyhledávání bez rozlišení velkých a malých písmen a použijeme -iname :

find . -maxdepth 1 -iname '*.mp3' -printf 'Deleting %p\n' -delete

Ubuntu
  1. Najděte MAC adresu v Ubuntu 21.10

  2. Ubuntu – Jak najít Xorg.conf. Kde to je?

  3. Mazání miliard souborů z adresáře a zároveň sledování pokroku?

  1. Nemůžete najít odpadkový koš?

  2. Najděte soubory, které byly změněny za posledních 24 hodin

  3. Zjistěte, zda OS běží ve virtuálním prostředí

  1. Hledání souborů v příkazovém řádku (jak na to)

  2. Jak najít balíček, který poskytuje konkrétní soubor v Linuxu

  3. Jak najít fyzické svazky, které obsahují logický svazek v LVM