web-dev-qa-db-fra.com

Comment supprimer tous les fichiers d'une taille inférieure à 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 de plus gros fichiers pdf, ainsi que de gros fichiers tif de plusieurs pages.

Je souhaite supprimer tous les petits fichiers tif sans supprimer les plus gros fichiers (tif ou pdf) et conserver la structure de répertoires. Comment puis-je m'y prendre sous Linux en utilisant la ligne de commande?

83
To Do
find . -name "*.tif" -size -160k -delete

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

Notez le - avant 160k. Juste 160k signifie exactement 160 kilo-octets. -160k signifie moins de 160 kilo-octets. +160k signifie plus de 160 kilo-octets.

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

146
lesmana