¿Cómo elimino todos los archivos con un nombre en todos los subdirectorios?

25

Quiero eliminar todos los archivos con un nombre en todos los subdirectorios de mi directorio de inicio.

Lo intenté:

rm -r file

en mi directorio de inicio, pero no funcionó porque ese archivo no existe en ese directorio.

oadams
fuente

Respuestas:

36

find . -name "filename" -delete

tante
fuente
12

Como explicación de la respuesta de @ tante, es posible que desee asegurarse de que la lista de archivos utilizada sea correcta antes de eliminar esos archivos:

find <source_dir> -name <filename> -print

si la inspección muestra una lista válida, entonces

find <source_dir> -name <filename> -delete

Otra opción si desea esto en muchos directorios utilizando un directorio de retención temporal:

mkdir <dest_dir>
for i in <list_of_directories>
do
  find "$i" -name <filename> -exec /bin/mv {} <dest_dir>
done

# check dest_dir
ls dest_dir
rm -rf <dest_dir>

Como siempre, asegúrese de la precisión de los scripts antes de la ejecución y siempre tenga una copia de seguridad lista en caso de que algo salga mal.

Wayne
fuente
3
siempre ponga comillas dobles alrededor de las sustituciones variables, o su comando no funcionará con nombres de archivo que contengan ciertos caracteres especiales (espacios en blanco, comodines y barras diagonales inversas).
Gilles 'SO- deja de ser malvado'
@Gilles: Sí, gracias por actualizar y garantizar que esta respuesta sea correcta.
Wayne el