¿Cómo puedo eliminar todos los archivos .swp en todos mis subdirectorios en Linux?
¿Cómo puedo eliminar todos los archivos .swp en todos mis subdirectorios en Linux?
Respuestas:
Elimine todos los archivos * .swp debajo del directorio actual, use el find
comando en una de las siguientes formas:
find . -name \*.swp -type f -delete
La -delete
opción significa que find eliminará directamente los archivos coincidentes. Esta es la mejor coincidencia con la pregunta real de OP.
Usar -type f
significa find solo procesará archivos.
find . -name \*.swp -type f -exec rm -f {} \;
find . -name \*.swp -type f -exec rm -f {} +
La opción -exec
permite encontrar para ejecutar un comando arbitrario por archivo. La primera variante ejecutará el comando una vez por archivo, y la segunda ejecutará la menor cantidad de comandos posible al reemplazar {}
con tantos parámetros como sea posible.
find . -name \*.swp -type f -print0 | xargs -0 rm -f
La canalización de la salida xargs
se utiliza para formar comandos por archivo más complejos de lo que es posible con -exec
. La opción -print0
le dice find
que separe las coincidencias con ASCII NULL en lugar de una nueva línea y -0
le dice xargs
que espere una entrada separada por NULL. Esto hace que la construcción de la tubería sea segura para los nombres de archivo que contienen espacios en blanco.
Ver man find
para más detalles y ejemplos.
find /path -type f -name "*.swp" -delete
find /path -type f -name "*.swp" -exec rm -f "{}" +;
bash 4.0
shopt -s globstar
rm -f /path/**/*.swp
Para buscar en mi directorio de inicio (y usar GNU 'find' y 'xargs'), usaría:
find $HOME -name '*.swp' -print0 | xargs -0 rm -f
El uso de ' -print0
' y ' -0
' significa que los nombres serán delimitados por caracteres ASCII NUL '\ 0', y esto manejará las rutas de archivo con espacios en blanco, etc. en los nombres. Si cree que puede tener directorios (o archivos de dispositivo, o FIFO, u otros que no sean archivos) en su directorio que terminan en '.swp', puede agregar la -type f
opción ' ' para 'buscar'. Si solo tiene directorios, el comando anterior no podrá eliminarlos ruidosamente.