Cómo eliminar todos los archivos que comienzan con una determinada cadena en Linux
Necesito encontrar todos los archivos que comienzan con el nombre NAME
en un árbol de directorios y eliminar todos estos archivos usando un comando del shell.
Necesito encontrar todos los archivos que comienzan con el nombre NAME
en un árbol de directorios y eliminar todos estos archivos usando un comando del shell.
Elimina todos los archivos del directorio actual y sus subdirectorios cuyo nombre empiece por “foo”:
$ find . -type f -name foo\* -exec rm {} \;
NB: utilícelo con precaución - haga primero una copia de seguridad - también haga un simulacro primero, por ejemplo,
$ find . -type f -name foo\*
sólo le dirá los nombres de los archivos que se eliminarían.
He intentado esta manera que está trabajando para mí intente abajo comando.
rm -rf Example*
aquí “Ejemplo” es el texto que es común para todos los archivos.
Con la opción globstar
(habilitada con shopt -s globstar
):
rm -f **/NAME*
**/
se expande a ./
, */
, */*/
, */*/*/
etc. Si tienes un nombre de directorio que empieza por NAME
, el comando se quejará de que rm
no puede eliminar directorios, pero eso es todo.
Tenga en cuenta que esto puede tener limitaciones en la longitud de la línea de comandos si el glob coincide con muchos archivos.
Alternativamente, con el menor número posible de invocaciones de rm
, pero sin estar sujeto a ninguna limitación de longitud de línea de comandos:
find . -type f -name 'NAME*' -exec rm -f {} +
(Observe el +
en lugar de \;
para cerrar la sentencia -exec
).
find . -name 'foo'* -type f -delete
parece la respuesta más sencilla.
Puede ejecutar esto sin la bandera -delete
antes para ver qué archivos se borrarán.