Určite ste niekedy overili, že máte zbytočný typ súboru v niekoľkých priečinkoch, ktorý zaberá málo miesta, ale vo svojom počítači ho jednoducho nechcete. Napríklad v systéme macOS sa vytvárajú niektoré súbory .DS_Store ktoré ukladajú informácie o ikone priečinka, jeho veľkosti a umiestnení a v systéme Windows existujú súbory desktop.ini, ktoré sú rovnocenné. Čo robiť, ak máme adresár plný podadresárov a chceme odstrániť tieto alebo iné typy súborov? Čo musíme urobiť, je rekurzívne vymazať Každý z nich.
To je niečo, čo môžeme urobiť so všetkými typmi súborov. Napríklad, ak máme pevný disk plný hudby, máme prehrávač, ktorý si stiahol obaly a nechceme, aby boli uložené, môžeme ich vymazať pomocou rovnakého príkazu, ktorý podrobne uvedieme nižšie. Samozrejme, berúc do úvahy, že budeme s terminálom rekurzívne mazať súbory adresárov a ich podadresáre a že tieto budú navždy stratené, nezaškodí byť opatrný a / alebo vykonať test pred odstránením všetkého, čo chceme vymazať.
Rekurzívne odstráňte súbory typu z terminálu
Príkazy pre vzorové súbory macOS .DS_Store by boli tieto:
cd ruta/a/directorio find . -name '*.DS_Store' -type f -delete
Z predchádzajúcich príkazov nás prvý umiestni do priečinka, kde chceme začať, teda do toho, ktorý obsahuje všetky súbory .DS_Store, ktoré chceme vymazať. Druhý je ten, ktorý vymaže všetky súbory .DS_Store z prvý priečinok a jeho podpriečinky alebo adresáre. Ak chceme vymazať fotografie z vyššie spomenutých hudobných priečinkov, musíme vložiť typ prípony medzi úvodzovky, napríklad „* .jpg“.
Ak mám byť úprimný na 100%, urobím to každý deň, keď prestanem používať Cantata ako predvolený hudobný prehrávač. Cantata vytvára a skrýva informačné súbory s rovnakým názvom ako piesne, ktoré majú pred sebou bodku a nízku čiaru (napríklad ._Song). Keď to budem potrebovať, príkaz, ktorý budem musieť použiť, bude Nájsť. -name '._ *' -typ f -delete.
Pomohol vám tento malý sprievodca rekurzívnym odstránením súborov z terminálu?
Ďakujeme, ale vo vašom kóde je chyba. Musíte použiť regulárny výraz '*', ktorý je '* .DS_STORE'. Odporúčam vám to napraviť. Pre tých, ktorí majú menšie znalosti bash, kód, ktorý ste zadali, pre nich nebude fungovať. Zdravím vás!