Vorrei eliminare ogni file, ma mantengo la struttura delle cartelle. C'è un modo?
NOTA: (sto usando GNU bash 4.1.5).
Vorrei eliminare ogni file, ma mantengo la struttura delle cartelle. C'è un modo?
NOTA: (sto usando GNU bash 4.1.5).
Risposte:
Prova questo:
find . ! -type d -exec rm '{}' \;
Ciò eliminerà ogni singolo file, escluse le directory, sotto la directory di lavoro corrente. Stai estremamente attento con questo comando.
Se la versione di find
sulla tua macchina lo supporta, puoi anche usare
find . ! -type d -delete
find
comando non vede mai le virgolette. Vede solo il {}
marcatore come argomento.
-exec command {} +
" & this " -exec command ;
". Ho usato il \;
in passato semplicemente mai il '{}'.
È possibile utilizzare il comando find
per individuare ogni file ma mantenere la struttura della directory:
$ find /some/dir -type f -exec rm {} +
Per questo domande e risposte su Unix e Linux intitolate: gnu trova e maschera il {} per alcune shell - quale? , sfuggire al {}
segno di spunta singolo ( '
) non sembra più necessario con le conchiglie moderne come Bash.
Il modo semplice per eliminare ricorsivamente tutti i file normali nella directory corrente e nelle sottodirectory:
zsh -c 'rm **/*(.)'
Solo zsh ha qualificazioni globbing per abbinare i file per tipo. Tuttavia, il rm
comando non funziona su directory, quindi in bash puoi usare
shopt -s globstar
rm **/*
Questo non funziona per comandi diversi da quelli rm
però. In generale, puoi usare find
:
find . -type f -delete
o se il tuo find
non supporta -delete
:
find . -type f -exec rm {} +
Avevo un requisito simile per eliminare i file da un percorso e dalle sue sottodirectory (filtrando per tempo) senza eliminare la struttura delle directory.
E ho usato il formato seguente che ha funzionato per me.
find / test123 / home / test_file_hip / data / nfs -mtime +6 -type f -exec rm {} \;
Sintassi: find (percorso del file) -mtime (maggiore o minore di giorni) -type f -exec rm {} \;
-type: menziona il tipo di file "f" per la directory "d" -exec: esegui il comando rm: remove {}: output del comando find
Nota: testarlo prima di usarlo. Sentiti libero di correggere o aggiornare se ho perso qualcosa.
find ... rm
struttura di base è già stata coperta, non sono sicuro che si tratti di un prezioso contributo come nuova risposta a questa domanda.