126 votes

Comment supprimer tous les fichiers inférieurs à une certaine taille dans tous les sous-dossiers ?

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

Je veux supprimer tous les petits fichiers tif sans supprimer les plus gros fichiers (tif ou pdf) et en conservant la structure du répertoire. Comment dois-je m'y prendre sous Linux en utilisant la ligne de commande ?

208voto

Lesmana Points 18245
find . -name "*.tif" -type 'f' -size -160k -delete

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

Notez le - antes de 160k . Juste 160k signifie exactement 160 kilo-octets. -160k signifie plus petit que 160 kilo-octets. +160k signifie plus grand que 160 kilo-octets.

El -type 'f' force la commande à n'agir que sur les fichiers et à ignorer les répertoires. Cela permet d'éviter les erreurs si le chemin d'accès contient des dossiers dont le nom correspond au motif *.tif .

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. Il s'agit d'une exigence étrange de POSIX. Lisez ici pour plus de détails : https://unix.stackexchange.com/questions/259208/purpose-of-find-commands-default-size-unit-512-bytes

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X