Někdy potřebujete odebrat téměř všechny soubory z adresáře, ale chcete si jednu nebo některé ponechat. Když je jich velké množství, jít po jednom je zdlouhavý úkol. Není to nejlepší volba, existují způsoby, jak si práci v Linuxu výrazně usnadnit a že můžete eliminovat všechny, které potřebujete najednou.
Můžete například chtít odebrat pouze ty, které začínají určitým názvem, nebo ty, které mají konkrétní příponu atd. Všechno je možnéVe skutečnosti jsem již při jiných příležitostech ukázal podobné výukové programy v LxA. Zde můžete postupovat krok za krokem a jednoduchým způsobem, abyste mohli odstranit všechny soubory, které chcete, kromě toho, co chcete uložit.
A nejlepší na tom je nebudete muset instalovat žádný program, lze to snadno provést pomocí příkazů jako rm and find. To znamená, že programy, které jsou již předinstalovány v jakékoli distribuci systému Linux. A samozřejmě bude metoda založena na hledání vzorů a použití těchto shod k odstranění pouze toho, co chcete.
No, aby to tam bylo odstraněno několik alternativ, Co jsou…
Odeberte soubory z adresáře pomocí rm
Aby bylo možné použít rm příkaz Abyste vyloučili, na co máte chuť, musíte nejprve znát některé způsoby, jak identifikovat vzorce:
- * (seznam vzorů) - odpovídá nule nebo více výskytům zadaných vzorů
- ? (seznam vzorů) - odpovídá nule nebo jednomu výskytu specifikovaných vzorů
- + (seznam vzorů) - odpovídá jednomu nebo více výskytům zadaných vzorů
- @ (seznam vzorů) - odpovídá jednomu ze zadaných vzorů
- ! (seznam vzorů) - odpovídá cokoli kromě jednoho z daných vzorů
na aktivovat extglob Abyste je mohli použít, musíte nejprve provést následující příkaz:
<br data-mce-bogus="1"> shopt -s extglob<br data-mce-bogus="1">
Nyní můžete pomocí rm odstranit cokoli chcete. Například, odstranit všechny soubory z adresáře kromě těch, které odpovídají názvu «Lxa»:
rm -v !("lxa")
Můžete také určit dvě nebo více jmen, která nechcete smazat. Například abyste se vyhnuli odstranění „lxa“ a „desdelinux“:
rm -v !("lxa"|"desdelinux")
Můžete smazat všechny soubory, minus ti s prodloužením .mp3. Například:
rm -v !(*.mp3)
Na konci se můžete vrátit zpět na deaktivovat extglob:
shopt -u extglob
Odeberte soubory z adresáře pomocí funkce find
Další alternativou k rm je použijte find k odstranění toho, na co máte chuť. Můžete použít rouru a xargs s rm, nebo použít volbu -delete k nalezení. To znamená, že obecná syntaxe by byla:
find /directory/ -type f -not -name 'PATRÓN' -delete find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}
Představte si například, že chcete odstranit všechny soubory z adresáře kromě těch s příponou .jpg, můžete použít jeden z těchto dvou příkazů, protože oba mají stejný výsledek:
find . -type f -not -name '*.jpg'-delete find . -type f -not -name '*.jpg' -print0 | xargs -0 -I {} rm -v {}
Místo toho, pokud jste chtěli přidat nějaký další vzor, mohl bys taky. Představte si například, že nechcete odstranit soubor .pdf nebo .odt z adresáře:
find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete
Totéž byste samozřejmě mohli udělat s | a xargs jako v předchozím příkladu. Mimochodem, použili jsme - nelze popřít, ale můžete to odstranit, aby to bylo pozitivní, to znamená, že odstraníte odpovídající vzory a nevyloučíte je.
Odstraňte soubory z adresáře pomocí proměnné GLOBIGNORE
Konečně je Další alternativa najít a rm, a to pomocí proměnné prostředí ukazuje na soubory, které chcete odebrat nebo vyloučit. Představte si například, že chcete odstranit všechny soubory v adresáři s názvem Stahování a uložit soubory .pdf, .mp3 a .mp4. V takovém případě můžete provést následující:
cd Descargas GLOBIGNORE=*.pdf:*.mp4:.*mp3 rm -v * unset GLOBIGNORE