Recherchez et supprimez tous les fichiers sans extension dans un dossier et ses sous-dossiers

16

J'ai un dossier sans environ 500 sous-répertoires. Il y a beaucoup de déchets et je veux les nettoyer.

J'ai déjà supprimé certains types de fichiers dont je ne veux pas, comme les images, avec cette commande:

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

Cependant, je veux maintenant supprimer tous les fichiers sans extension. Des fichiers comme "Shopping list" au lieu de "Shopping list.txt"

J'ai essayé la commande suivante mais cela n'a pas fonctionné:

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

Réponses:

20

Essaye ça:

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

Cependant, notez que ce qui précède ne supprimera pas les fichiers dont le nom se termine par un ., par exemple foo.. Pour les supprimer également, utilisez plutôt ceci:

find . -type f  ! -name "*.?*" -delete
terdon
la source
La deuxième commande était ma prochaine question. Merci beaucoup! Je pouvais également taper find . -type f ! -name "*?.*" -deletepour supprimer des fichiers comme ".trash" ou tout ce dont je n'avais pas besoin. Ne vous inquiétez pas - ce n'était pas mon répertoire personnel, donc je n'ai perdu aucun fichier de configuration.
etsnyman
5
@etsnyman Mieux vaut tester d'abord la commande sans l' -deleteoption!
Radu Rădeanu
@etsnyman pas tout à fait, pour supprimer les fichiers qui commencent par un point, utilisez find . -type f -name ".*" -deletecelui de votre dernier commentaire supprimera également les fichiers sans extensions. Et ce que Radu a dit! Testez d'abord!
terdon
@ RaduRădeanu Je l'ai testé en premier sur un répertoire factice avec des fichiers vides ...
etsnyman
@terdon Que signifie le point d'interrogation dans votre deuxième commande?
Avinash Raj
2

Vous pouvez utiliser:

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