Il più vicino che ho ottenuto è
# rm /path/to/directory/*.*
ma questo non funziona per i file che non hanno un'estensione ...
Il più vicino che ho ottenuto è
# rm /path/to/directory/*.*
ma questo non funziona per i file che non hanno un'estensione ...
Risposte:
Linux non utilizza estensioni. Spetta al creatore del file decidere se desidera che il nome abbia un'estensione. Linux osserva il primo byte per capire con quale tipo di file ha a che fare.
Per rimuovere tutto in una directory utilizzare:
rm /path/to/directory/*
È possibile utilizzare l' -ropzione, ad esempio:
rm -r /path/to/directory/*
per rimuovere anche eventuali sottodirectory (insieme a tutto il loro contenuto) all'interno della directory di cui si sta rimuovendo il contenuto. Altrimenti mostrerà un errore che ti informa che non sta rimuovendo la directory.
all files;) *.*indica tutti i file che contengono un punto .nel nome
*a*significa zero o più caratteri, seguito da aseguito da zero o più caratteri. Sarebbe abbinare i nomi dei file happy, apple, ao la.
Per rimuovere la cartella con tutto il suo contenuto ( comprese tutte le cartelle interne ):
rm -rf /path/to/directory
Per rimuovere tutto il contenuto della cartella ( comprese tutte le cartelle interne ) ma non la cartella stessa:
rm -rf /path/to/directory/*
o
rm -rf /path/to/directory/{*,.*}
se si desidera assicurarsi che anche i file / le directory nascosti vengano rimossi.
Per rimuovere tutti i "file" dall'interno di una cartella ( non rimuovere le cartelle interne ):
rm -f /path/to/directory/{*,.*}
Attenzione : se hai spazi nel tuo percorso, assicurati di usare sempre le virgolette.
rm -rf /path/to the/directory/*
equivale a 2 rm -rfchiamate separate :
rm -rf /path/to
rm -rf the/directory/*
Per evitare questo problema, puoi usare 'virgolette singole '( non espande le variabili della shell) o "virgolette doppie "( espande le variabili della shell):
rm -rf "/path/to the/directory/"*
Dove:
rm- sta per " rimuovi "-f- sta per " forza " che è utile quando non si desidera che venga richiesto / richiesto se si desidera rimuovere un archivio, ad esempio.-r- sta per " ricorsivo ", il che significa che si desidera andare in modo ricorsivo in ogni cartella e rimuovere tutto.rm -rf /path/to/directory/*non rimuove un file nascosto nella cartella ad es .htaccess. Forse rm -rf /path/to/directory/.? Non l'ho provato.
rm -rf /path/to/directory/.*elimina solo i file nascosti nella directory specificata. Guardando il commento di @ danjjl sulla risposta di @ Rinzwind, per eliminare anche i file nascosti, esegui shopt -s dotglobprima di eseguire rm -rf /path/to/directory/*.
rm -rf /path/to/directory/.*sul mio sistema ha causato la cancellazione di elementi in /path/to. Fortunatamente, avevo appena eseguito il backup di tutti i miei dati su un disco separato. Inutile dire che NON emettere il comando a rm -rf /path/to/directory/.*meno che non sia stato eseguito il backup dell'intero computer in una posizione separata / sicura!
Per rimuovere tutti i file nella directory (inclusi i file nascosti e le sottodirectory) eseguire:
rm -rf /path/to/directory/{*,.*}
./e ../, ma eliminerà comunque i file nascosti.
rm -r $(pwd)/{*,.*}
Se vuoi eliminare solo i file nella directory / path / to / puoi farlo
find /path/to/directory -type f -print0| xargs -0 rm
o
find /path/to/directory -type f -exec rm '{}' \;
Puoi fare carichi con find, il vantaggio è che puoi elencare ciò che viene trovato senza eseguire il piping in rmmodo da poter vedere cosa verrà eliminato prima di iniziare.
GNU findcome -deletepredicato. Se si desidera ancora utilizzare -exec, la sostituzione \;con +raccoglierà le rmchiamate, aumentando l'efficienza.
Per eliminare tutti i file e le directory (inclusi quelli nascosti ) in una directory, puoi provare quanto segue:
eliminare la cartella, quindi ricrearla
rm -rf dir_name && mkdir dir_name
uso find
find dir_name -mindepth 1 -delete
Qui specifichiamo -mindepth 1di escludere la directory dir_name stessa.
Dai un'occhiata al seguente link:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
Se si desidera rimuovere anche tutte le sottodirectory e la directory stessa, è possibile utilizzare rm -rf /path/to/directory. Ma ricontrolla sempre la tua linea prima di premere rm -rfInvio , può anche causare un sacco di confusione, ad esempio se inserisci accidentalmente uno spazio dopo la prima barra mentre hai le autorizzazioni del superutente ...
Poiché questa domanda è costantemente al top di Google quando cerco questo da solo:
Le altre risposte soffrono di diversi problemi:
Alcuni di essi includono .e ..che è rumoroso, confuso e fastidioso.
Alcuni dimenticano i file nascosti (file che iniziano con un punto).
Non vengono eliminati in un ordine (il più profondo) corretto per consentire l'eliminazione della directory.
Discendono in altri file system (montati), che spesso sono indesiderati.
Sono difficili da estendere correttamente con parametri extra (più su quello sotto).
find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --
Si noti che ho aggiunto un -xdevargomento per impedire la discesa in mount (come /procecc.).
-deptho -delete?Nonostante la gente mi voti costantemente per questo, questi metodi hanno un rovescio della medaglia: non sembra che siano abbastanza estensibili per consentire la -prunecreazione di una sottodirectory (senza introdurre più problemi). Contrariamente a questo metodo, è possibile inserire
-not \( -path "${DIR}/subdir" -prune \)
prima -mindepthdell'argomento da escludere subdirdall'aver cancellato il suo contenuto.
-depthbandiera findper quello.
-deleteconfind ? -deleteè il primo in profondità. Stai già assumendo non POSIX findcon il -printf, quindi potresti anche usare -deleteo-depth -print0 | xargs -0 rm
-not \( -path "$DIR/subdir" \)... ma il mio funziona? Perché?
shopt -s dotglobprima di eseguirlorm (...)