Devo trovare tutti i file che iniziano con il nome NAMEin un albero di directory e rimuovere tutti questi file usando un comando shell.
Devo trovare tutti i file che iniziano con il nome NAMEin un albero di directory e rimuovere tutti questi file usando un comando shell.
Risposte:
per eliminare tutti i file il cui nome ha nome --- è possibile utilizzare
find -name . 'name*' -exec rm {} \;
grepha un -execinterruttore?
Elimina tutti i file nella directory corrente e nelle sue sottodirectory in cui il nome del file inizia con "pippo":
$ find . -type f -name foo\* -exec rm {} \;
NB: usare con cautela - eseguire prima il backup - eseguire prima anche una corsa a secco, ad es
$ find . -type f -name foo\*
ti dirà solo i nomi dei file che verrebbero eliminati.
find . -type f -name foo\* -deletefatto il trucco
Ho provato in questo modo che funziona per me prova sotto il comando.
rm -rf Example*
qui "Esempio" è un testo comune per tutti i file.
Puoi usare find:
find . -name "name*" -exec rm {} \;
Con l' globstaropzione (abilita con shopt -s globstar):
rm -f **/NAME*
**/si espande a ./, */, */*/, */*/*/ecc Se si dispone di una directory nome che inizia con NAME, il comando si lamentano che rmnon è possibile rimuovere le directory, ma questo è tutto.
Si noti che ciò potrebbe incorrere in limiti di lunghezza della riga di comando se il glob corrisponde a molti file.
In alternativa, con il minor numero rmpossibile di invocazioni , ma non soggetto a limiti di lunghezza della riga di comando:
find . -type f -name 'NAME*' -exec rm -f {} +
(Nota +invece di \;chiudere la -execdichiarazione.)
find . -name 'foo'* -type f -delete sembra la risposta più semplice.
Puoi eseguirlo senza il -deleteflag prima di vedere quali file verranno eliminati.
Cercare il numero "Inode" del file / cartella e quindi eliminare utilizzando il numero di inode. Di seguito è riportato un esempio:
ls -il
3407873 drwxr-xr-x. 2 root root 4096 Mar 30 07:49 –p
find . -inum 3407873 -exec rm -rf {} \;