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
etsnyman
fuente

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
terdon
fuente
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
2

Podrías usar:

find . -type f ! -name "*.*" -delete
Radu Rădeanu
fuente