Question Comment supprimer tous les fichiers plus petits qu'une certaine taille dans tous les sous-dossiers?


J'ai un dossier avec de nombreux sous-dossiers contenant de petits fichiers tif (moins de 160 Ko) qui ont été fusionnés dans des fichiers pdf plus grands, avec de gros fichiers tif multi-pages.

Je veux supprimer tous les petits fichiers tif sans supprimer les fichiers les plus volumineux (tif ou pdf) et conserver la structure des répertoires. Comment puis-je le faire sous Linux en utilisant la ligne de commande?


68
2017-09-12 09:57


origine




Réponses:


find . -name "*.tif" -size -160k -delete

Exécutez la commande sans -delete d'abord pour vérifier que les fichiers corrects sont trouvés.

Noter la - avant 160k. Juste 160k signifie exactement 160 kilo-octets. -160k signifie plus petit que 160 kilo-octets. +160k signifie plus de 160 kilo-octets.

Si vous voulez filtrer la taille en octets (comme dans 160 octets au lieu de 160 kilo-octets), vous devez l'écrire comme ceci: 160c. Si vous écrivez juste 160 il sera interprété comme 160 * 512 octets. Ceci est une exigence étrange par POSIX. Lire ici pour plus de détails: https://unix.stackexchange.com/questions/259208/purpose-of-find-commands-default-size-unit-512-bytes


115
2017-09-12 10:04



La page de manuel d'ubuntu semble le mentionner. Juste en dessous de la section "TESTS": Les arguments numériques peuvent être spécifiés avec + n pour plus grand que n, -n pour moins que n, exactement pour n. - jdg
Merci. Je ne me suis pas rendu compte que l'information pouvait être ailleurs dans la page de manuel. - lesmana
C'est bien cette commande fonctionne aussi récursivement. Mon cas d'utilisation serait de supprimer les fichiers .txt de moins de 12 Ko. - Sun
pas besoin de sudo? - Jean-François Gagnon
Pour les tailles en octets, spécifiez 50c, pas 50b ou 50! - Evengard