2012-10-02 12:18:00 +0000 2012-10-02 12:18:00 +0000
39
39
Advertisement

Come rimuovere tutti i file che iniziano con una certa stringa in Linux

Advertisement

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.

Advertisement
Advertisement

Risposte (7)

68
68
68
2012-10-02 12:19:23 +0000

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.

29
29
29
2016-07-28 10:51:24 +0000

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.

11
Advertisement
11
11
2012-10-02 12:22:38 +0000
Advertisement

Potete usare find:

find . -name "name*" -exec rm {} \;
3
3
3
2017-02-24 03:17:48 +0000

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).

3
Advertisement
3
3
2012-10-02 12:48:10 +0000
Advertisement

Per cancellare tutti i file che hanno un nome, potete usare:

find . -name 'name*' -exec rm {} \;
2
2
2
2018-08-27 16:28:09 +0000

find . -name 'foo'* -type f -delete sembra la risposta più semplice.

Potete eseguirlo senza il flag -delete prima per vedere quali file saranno cancellati.

-1
Advertisement
-1
-1
2015-03-30 06:04:34 +0000
Advertisement

Cerca il numero di “Inode” del file/cartella e poi cancella usando il numero di inode. Ecco un esempio:

ls -il
3407873 drwxr-xr-x. 2 root root 4096 Mar 30 07:49 –p

find . -inum 3407873 -exec rm -rf {} \;
Advertisement

Domande correlate

6
10
11
5
8
Advertisement
Advertisement