2015-05-27 9 views
15

Capisco che posso usare find . -name ".DS_STORE" a find all the .DS_STORE files nella cartella corrente e in tutte le sottocartelle. Ma come posso eliminarli dalla riga di comando contemporaneamente? Ho scoperto che è davvero fastidioso passare da una cartella all'altra e cancellarla una alla volta.Elimina file .DS_STORE nella cartella corrente e tutte le sottocartelle dalla riga di comando su Mac

Grazie per qualsiasi consiglio.

+0

Vedi il mio commento sulla risposta accettata. –

risposta

40

find può farlo. Basta aggiungere -delete:

find . -name ".DS_Store" -delete 
+0

È necessario risolvere il caso in cui il nome del file sia ** ". DS_Store" **, se utilizzato ".DS_STORE" non funzionerà in quanto i nomi dei file sono case sensitive. –

+0

@AmrLotfy Questo in realtà non è vero, il file system mac predefinito non fa distinzione tra maiuscole e minuscole – Others

+1

Per maggiore cautela, di solito escludo le directory come questa: 'find. -name '.DS_Store' -type f -delete' – xApple

0

è possibile utilizzare anche il globbing esteso (**):

rm -v **/.DS_Store 

in zsh, bash 4 e conchiglie simili (se non abilitato, attivare da: shopt -s globstar).

0

Crea un nuovo file con un editor di testo, copia e incolla il testo seguente e salvalo con l'estensione ".sh", quindi apri il file con Terminal. Assicurati che l'editor di testo stia effettivamente salvando il testo non elaborato e non salvando il file come un file in formato RTF o qualche altro formato di file di testo con ulteriori informazioni nel file.

#!/bin/bash 
echo -e "\nDrag a folder here and press the Enter or Return keys to delete all files whose names begin with a dot in its subfolders:\n" 
read -p "" FOLDER 
echo -e "\nThe following files will be deleted:\n" 
find $FOLDER -name ".*" 
echo -e "\nDelete these files? (y/n): " 
read -p "" DECISION 
while true 
do 
    case $DECISION in 
     [yY]*) find $FOLDER -name ".*" -delete 
     echo -e "\nThe files were deleted.\n" 
     break;; 
     [nN]*) echo -e "\nAborting without file deletion.\n" 
     exit;; 
     *) echo -e "\nAborting without file deletion.\n" 
     exit;; 
    esac 
done 
5
find . -name ".DS_Store" -print -delete 
+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - [Dalla recensione] (/ recensione/post di bassa qualità/17012288) – kelin

+0

@kelin uh, come è questa una risposta di solo collegamento quando non c'è alcun collegamento? – ppperry

+0

@ppperry, questo è un messaggio automatico dalla recensione. Ho votato per cancellare la tua risposta, perché non aggiunge nulla di importante rispetto a quello accettato. – kelin