Come rimuovere tutti i file che iniziano con una certa stringa in Linux
Ho bisogno di trovare tutti i file che iniziano con il nome NAME
in un albero di directory e rimuovere tutti questi file usando un comando di shell.
Ho bisogno di trovare tutti i file che iniziano con il nome NAME
in un albero di directory e rimuovere tutti questi file usando un comando di shell.
Elimina tutti i file nella directory corrente e nelle sue sottodirectory dove il nome del file inizia con “pippo”:
$ find . -type f -name foo\* -exec rm {} \;
NB: usate con cautela - fate prima un backup - fate anche una prova generale, ad esempio
$ find . -type f -name foo\*
vi dirà solo i nomi dei file che verrebbero cancellati.
Ho provato in questo modo che sta funzionando per me, prova il seguente comando.
rm -rf Example*
qui “Esempio” è un testo che è comune a tutti i file.
Con l'opzione globstar
(attiva con shopt -s globstar
):
rm -f **/NAME*
**/
si espande a ./
, */
, */*/
, */*/*/
ecc. Se hai un nome di directory che inizia con NAME
, il comando si lamenterà che rm
non può rimuovere directory, ma questo è tutto.
Notate che questo potrebbe incorrere in limitazioni sulla lunghezza della linea di comando se il glob corrisponde a molti file.
In alternativa, con il minor numero possibile di invocazioni di rm
, ma non soggetto a limitazioni sulla lunghezza della riga di comando:
find . -type f -name 'NAME*' -exec rm -f {} +
(Notate lo +
invece di \;
per chiudere l'istruzione -exec
).
find . -name 'foo'* -type f -delete
sembra la risposta più semplice.
Potete eseguirlo senza il flag -delete
prima per vedere quali file saranno cancellati.