Vorrei andare in questo modo:
find . ! -name <filename> -delete
affinché funzioni con le cartelle, devi sostituire delete
con exec rm -r
find . ! -name <filename> -exec rm -rv {} \;
Questo si riduce a
find
= trova
.
= nella directory di lavoro corrente, puoi sostituire .
con un percorso, come ~/Documents/
!
= non
-name
= nome
<filename>
= file
-exec
= esegui
rm -rv
= verbose remove
{}
= risultati del ritrovamento
\;
= chiudi l'esecuzione
Trova tutti i file e le cartelle nella cartella di lavoro, che non ha il nome filename
e quindi esegui il comando remove sui risultati.
Dovresti eseguire una prova a secco senza l'opzione di eliminazione, in primo luogo:
find . ! -name <filename>
Questo comando ti fornisce un elenco di tutti i file e le cartelle nella tua directory di lavoro che non sono denominati <filename>
. L'aggiunta di -delete
o -exec rm -rv {} \;
, cancellerà questi file e la cartella (la versione exec
).
Potresti anche usare
rm -v [^filename]
per le cartelle aggiungi -r
rm -rv [^filename]
In qualche modo mi sento più a mio agio usando l'opzione find
. Soprattutto perché puoi fare una corsa a secco. In entrambi i casi vorrei iniziare con una cartella fittizia e provare entrambe le opzioni.