GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak odstranit všechny soubory kromě jednoho pojmenovaného souboru z konkrétní složky?

Tato otázka zde již obsahuje odpovědi :Smazat všechny soubory kromě souborů s příponou pdf v adresáři

(13 odpovědí)
Uzavřeno před 5 lety.

Zde je situace.

Mám adresář, který obsahuje mnoho souborů s různými příponami. Chci smazat všechny soubory kromě jednoho s konkrétním názvem.

To lze snadno provést pomocí GUI výběrem všech a stisknutím ctrl a zrušení výběru příslušného souboru.

To je přesně to, co chci, ale jak to mohu udělat z příkazového řádku?

Například: dirA obsahuje následující soubory:

a.txt
b.txt
c.php
d.html
a.db
b.db
e.html

Chci smazat všechny soubory a ponechat pouze soubor s názvem a.txt .

Nejlepší odpověď

Přišel jsem s tímto snadným a skvělým příkazem:

rm !(a.txt)

Můžeš použít ! jako negace

Nejprve otestujte globus pomocí echo, tj.

echo !(a.txt)

Pokud to nefunguje, pro bash možná to budete muset povolit pomocí

shopt -s extglob

Pokud chcete zachovat oba a.txt a b.txt , můžete použít !(a.txt|b.txt) nebo !([ab].txt) .

Upravit:

vytvořit rm funguje rekurzivně, stačí přidat -r jako

rm -r !(a.txt)

a také pracuje se složkou. stačí změnit název na název adresáře, například a_dir

rm -r !(a_dir)

Ubuntu
  1. 3 způsoby, jak odstranit všechny soubory v adresáři kromě jednoho nebo několika souborů s příponami

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

  3. Odstraňte všechny složky ve složce kromě jedné s určitým názvem

  1. Jak odstranit soubory a adresáře v Linuxu z příkazového řádku

  2. Jak přesunout všechny soubory (včetně skrytých) z jednoho adresáře do druhého?

  3. Odebrat všechny soubory/adresáře kromě jednoho souboru?

  1. Jak přesunout 100 souborů ze složky obsahující tisíce?

  2. Smazat všechny soubory ve složce kromě posledních (nejnovějších) 20?

  3. Jak odstranit všechny soubory s konkrétní příponou v konkrétní složce?