Encuentre y elimine todos los archivos sin extensiones dentro de una carpeta y sus subcarpetas


16

Tengo una carpeta sin alrededor de 500 subdirectorios. Hay mucha basura en ella y quiero limpiarla.

Ya he eliminado ciertos tipos de archivos que no quiero, como imágenes, con este comando:

find . -mindepth 1 -iname "*.jpg" -type f -delete

Sin embargo, ahora quiero eliminar todos los archivos sin extensión. Archivos como "Lista de compras" en lugar de "Lista de compras.txt"

He intentado el siguiente comando pero no funcionó:

find . -mindepth 1 ! -iname "*.*" -type f -delete

Respuestas:


20

Prueba esto:

find . -type f  ! -name "*.*"  -delete

Sin embargo, tenga en cuenta que lo anterior no eliminará los archivos cuyo nombre termina en a ., por ejemplo foo.. Para eliminarlos también, use esto en su lugar:

find . -type f  ! -name "*.?*" -delete

El segundo comando fue mi siguiente pregunta. ¡Muchas gracias! También podría escribir find . -type f ! -name "*?.*" -deletepara eliminar archivos como ".trash" o lo que sea que no necesitaba. No se preocupe, no era mi directorio de inicio, así que no perdí ningún archivo de configuración.
etsnyman

55
@etsnyman ¡Es mejor probar primero el comando sin la -deleteopción!
Radu Rădeanu

@etsnyman no del todo, para eliminar archivos que comienzan con un punto, use find . -type f -name ".*" -deleteel que está en su último comentario también eliminará archivos sin extensiones. ¡Y qué dijo Radu! Prueba primero!
terdon

@ RaduRădeanu Realmente lo probé primero en un directorio ficticio con archivos vacíos ...
etsnyman

@terdon ¿Qué significa el signo de interrogación en su segundo comando?
Avinash Raj

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.