Visst vid något tillfälle har du verifierat att du har en värdelös typ av fil i flera mappar, vilket tar lite utrymme men du vill helt enkelt inte ha den på din dator. I macOS skapas till exempel vissa filer .DS_Store som sparar information om en mapps ikon, dess storlek och position, och i Windows finns desktop.ini som är likvärdiga. Vad gör vi om vi har en katalog full av underkataloger och vi vill ta bort dessa eller andra typer av filer? Vad vi måste göra är radera rekursivt Var och en av dem.
Det här är något vi kan göra med alla typer av filer. Till exempel, om vi har en hårddisk full av musik, har vi en spelare som har laddat ner omslagen och vi vill inte ha dem sparade, vi kan använda samma kommando som vi kommer att beskriva nedan för att radera dem. Naturligtvis med tanke på att vi kommer att ta bort katalogfiler och deras underkataloger rekursivt med terminalen och att dessa kommer att gå förlorade för alltid, det gör inte ont att vara försiktig och / eller gör ett test innan du tar bort allt vi vill ta bort.
Ta bort filer av en typ rekursivt från terminalen
Kommandona för exemplet macOS .DS_Store-filer skulle vara följande:
cd ruta/a/directorio find . -name '*.DS_Store' -type f -delete
Av de tidigare kommandona placerar den första oss i den mapp där vi vill börja, det vill säga den som innehåller alla .DS_Store-filer som vi vill ta bort. Den andra är den som tar bort alla .DS_Store-filer från första mappen och dess undermappar eller kataloger. Om det vi vill är att ta bort bilderna från de tidigare nämnda musikmapparna måste vi sätta tilläggstypen mellan citattecken, till exempel '* .jpg'.
För att vara 100% ärlig är det något jag kommer att göra den dagen jag slutar använda Cantata som standardmusikspelare. Cantata skapar och döljer informationsfiler med samma namn som låtarna som har en punkt och ett lågt fält framför (till exempel ._Song). När jag behöver det kommer kommandot jag måste använda att vara hitta. -namn '._ *' -typ f -radera.
Har den här lilla guiden hjälpt dig att radera filer från terminalen rekursivt?
Tack, men det finns ett fel i din kod. Du måste använda det reguljära uttrycket '*', det vill säga '* .DS_STORE'. Jag rekommenderar att du korrigerar det. För de som har mindre kunskap om bash fungerar inte koden du gav. Hälsningar!