Niekedy potrebujete odstrániť takmer všetky súbory z adresára, ale chcete si jednu alebo niektoré ponechať. Ak je ich veľké množstvo, ísť po jednom je únavná úloha. Nie je to najlepšia voľba, existujú spôsoby, ako si prácu v Linuxe výrazne uľahčiť a že môžete vylúčiť všetky, ktoré práve potrebujete.
Môžete napríklad odstrániť iba tie, ktoré sa začínajú určitým menom, alebo tie, ktoré majú konkrétnu príponu atď. Všetko je možnéV skutočnosti som už pri iných príležitostiach ukázal podobné tutoriály v LxA. Tu môžete postupovať krok za krokom a jednoduchým spôsobom, aby ste mohli vymazať všetky súbory, ktoré chcete, s výnimkou tých, ktoré chcete uložiť.
A najlepšie je, že nebudete musieť inštalovať žiadny program, dá sa to ľahko urobiť príkazmi ako rm and find. To znamená, že programy, ktoré sú už predinštalované na akomkoľvek distro Linuxu. Metóda bude samozrejme založená na hľadaní vzorov a použití týchto zhôd na odstránenie iba toho, čo chcete.
No, aby sa tam vylúčilo niekoľko alternatív, Čo sú zač…
Odstráňte súbory z adresára pomocou rm
Aby bolo možné použiť príkaz rm Aby ste eliminovali to, na čo máte chuť, musíte poznať niekoľko spôsobov, ako identifikovať vzorce:
- * (zoznam vzorov) - zodpovedá nule alebo viacerým výskytom zadaných vzorov
- ? (zoznam vzorov) - zodpovedá nule alebo jednému výskytu špecifikovaných vzorov
- + (zoznam vzorov) - zhoduje sa s jedným alebo viacerými výskytmi zadaných vzorov
- @ (zoznam vzorov) - zodpovedá jednému zo zadaných vzorov
- ! (zoznam vzorov) - zhoduje sa s čímkoľvek okrem jedného z daných vzorov
na aktivovať extglob Aby ste ich mohli použiť, musíte najskôr vykonať nasledujúci príkaz:
<br data-mce-bogus="1"> shopt -s extglob<br data-mce-bogus="1">
Teraz môžete pomocou rm odstrániť všetko, čo chcete. Napríklad, odstráni všetky súbory z adresára okrem tých, ktoré zodpovedajú názvu «Lxa»:
rm -v !("lxa")
Môžete tiež určiť dve alebo viac mien, ktoré nechcete vymazať. Napríklad aby ste sa vyhli odstráneniu súborov „lxa“ a „desdelinux“:
rm -v !("lxa"|"desdelinux")
Môžete vymazať všetky súbory, mínus tie s predĺžením .mp3. Napríklad:
rm -v !(*.mp3)
Na konci sa môžete vrátiť späť na zakázať extglob:
shopt -u extglob
Odstráňte súbory z adresára pomocou funkcie find
Ďalšou alternatívou k rm je použite find na odstránenie všetkého, na čo máte chuť. Môžete použiť pipe a xargs s rm, alebo vyhľadať pomocou voľby -delete. To znamená, že všeobecná syntax by bola:
find /directory/ -type f -not -name 'PATRÓN' -delete find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}
Napríklad si predstavte, že chcete odstráni všetky súbory v adresári okrem tých, ktoré majú príponu .jpg, môžete použiť jeden z týchto dvoch príkazov, pretože oba majú rovnaký výsledok:
find . -type f -not -name '*.jpg'-delete find . -type f -not -name '*.jpg' -print0 | xargs -0 -I {} rm -v {}
Namiesto toho, ak ste chceli pridať nejaký vzor navyše, mohol by si tiež. Predpokladajme napríklad, že nechcete odstrániť súbor .pdf alebo .odt z adresára:
find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete
To isté môžete samozrejme urobiť s | a xargs ako v predchádzajúcom príklade. Mimochodom, použili sme - nemožno poprieť, ale môžete to odstrániť, aby ste dosiahli pozitivitu, to znamená, že odstránite zodpovedajúce vzory a nevylúčite ich.
Odstráňte súbory z adresára pomocou premennej GLOBIGNORE
Konečne je tu Ďalšia alternatíva na vyhľadanie a rm a pomocou premennej prostredia ukazuje na súbory, ktoré chcete odstrániť alebo vylúčiť. Predstavte si napríklad, že chcete odstrániť všetky súbory v adresári s názvom Stiahnutie a uložiť súbory .pdf, .mp3 a .mp4. V takom prípade môžete:
cd Descargas GLOBIGNORE=*.pdf:*.mp4:.*mp3 rm -v * unset GLOBIGNORE