GNU/Linux >> Znalost Linux >  >> Linux

Jak odstranit všechny soubory v adresáři kromě některých?

Do rm všechny kromě u,p v bash stačí napsat:

rm !(u|p)

To vyžaduje, aby byla nastavena následující možnost:

shopt -s extglob

Zobrazit více:glob – Gregova Wiki


Co v těchto případech dělám, je psát

rm *

Poté stisknu Ctrl +X ,* rozbalit * do všech viditelných názvů souborů.

Pak mohu jen odstranit dva soubory, které si chci ponechat, ze seznamu a nakonec spustit příkazový řádek.


Můžete použít find

find . ! -name u ! -name p -maxdepth 1 -type f -delete
  • ! neguje další výraz
  • -name určuje název souboru
  • -maxdepth 1 způsobí, že proces hledání zpracuje pouze zadaný adresář (find ve výchozím nastavení prochází adresáře)
  • -type f zpracuje pouze soubory (a nikoli například adresáře)
  • -delete smaže soubory

Poté můžete vyladit podmínky pomocí manuálové stránky find

Aktualizovat

  • Mějte na paměti, že pořadí prvků výrazů je důležité (viz dokumentace).
  • Nejprve svůj příkaz otestujte pomocí -print místo -delete

    find . ! -name u ! -name p -maxdepth 1 -type f -print
    

Linux
  1. Jak najít soubor v Linuxu ve všech adresářích rekurzivně

  2. Smazat všechny soubory kromě určitého podadresáře pomocí funkce Najít?

  3. Použijte Najít k nalezení určitého adresáře a odstranění všech souborů v něm kromě jednoho adresáře?

  1. Jak najít všechny soubory s velikostí souboru nula (0) bajtů v adresáři rekurzivně

  2. Shell - Jak najít adresář nějakého příkazu?

  3. Jak najít všechny soubory končící na .rb s Linuxem?

  1. Jak gzipovat všechny soubory ve všech podadresářích v bash

  2. Jak najít všechny soubory s konkrétním nadřazeným adresářem v linuxu?

  3. Odstraňte odpovídající soubory ve všech podadresářích