Come eliminare il contenuto di una directory in Centos


9

Devo eliminare tutto il contenuto di una cartella in CentOS ma non la cartella stessa.

Ad esempio: ho una cartella denominata "MYFOLDER" che contiene le sottocartelle FOLD_1, FOLD_2, FOLD_3, FOLD_4 ... ecc. E alcuni file. Devo eliminare tutte queste cartelle e file ma non la cartella contenitore MYFOLDER. Ho bisogno di questa directory per dirigere i risultati di un processo precedente.

Ho provato con il rm -rf comando, ma questo elimina anche la cartella del contenitore.

Risposte:


11

Elimina invece il contenuto della cartella.

rm -r MYFOLDER/*

1
Nota che questo non nasconde file / directory all'interno di MYFOLDER
tylerl,

1
@tylerl: lo fa se si imposta shopt -s dotglobprima.
jgoldschrafe,

Ciò richiede l'approvazione manuale y / n decrescente in ciascuna sottodirectory, il che è una completa perdita di tempo. Il comando corretto gestirà tutto ciò automaticamente in modo da non rimanere bloccato con 50 prompt.
CodeMed,

rm -R /path/to/myfolder/*è la sintassi corretta per evitare richieste eccessive di approvazione della cancellazione di ogni file e sottocartella. Nota la capitale R.
CodeMed

5

Puoi usare:

rm -r MYFOLDER/{.[^.],.??*}

Ciò elimina anche i file e le cartelle nascosti. Se hai troppi file nella directory MYFOLDER, dovresti invece eseguire:

ls MYFOLDER/{.[^.],.??*}|xargs rm -r

Ho oltre 500k file nella mia meta/directory, quindi volevo provare l'alternativa xargs, tuttavia ricevo questi messaggi di errore: ls: cannot access meta/.[^.]: No such file or directory ls: cannot access meta/.??*: No such file or directory rm: missing operand
Andres SK

1
Assicurati di utilizzare la bashshell. La shell deve supportare "Brace Expansion" e "Regular Expressions" per i pattern di file.
Mircea Vutcovici,

3

Il modo più semplice, a mio avviso, è quello di eliminare l'intera directory, incluso se stessa, e quindi ricreare la cartella. Ci sono situazioni in cui questa non è una buona soluzione (ad esempio script incustoditi o pipeline più complesse), ma non hai specificato perché non volevi eliminare la cartella.

rm -rf foldername
mkdir foldername

Ops. Hai specificato (rileggo il tuo post). Bene, ancora, l'eliminazione e la ricreazione possono funzionare. Soprattutto se si mettono insieme i comandi, come

rm -rf foldername && mkdir foldername

O

rm -rf foldername; mkdir foldername

A volte non si dispone dell'autorizzazione nella cartella principale o si desidera conservare determinati attributi di cui non si è a conoscenza. Ad esempio, non è possibile eliminare la cartella principale come utente non root, ma è possibile rimuovere qualsiasi cosa al suo interno.
Mircea Vutcovici,

Questa dovrebbe essere la risposta accettata. +1
CodeMed



0

Consiglio vivamente questa alternativa (rimuove anche i file con spazi nei nomi):

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.