Semblable à la réponse exec rm, mais n'a pas besoin d'un processus pour chaque fichier trouvé :
find . -size +100k -delete
Une ligne :
find . -size +100k -exec rm {} \;
La première partie (find . -size +100k
) recherche tous les fichiers à partir du répertoire courant (.
) dépassant (+
) 100 Ko (100k
).
La deuxième partie (-exec rm {} \;
) a appelé la commande donnée sur chaque fichier trouvé. {}
est un espace réservé pour le nom du fichier actuel, y compris le chemin. \;
marque juste la fin de la commande.
N'oubliez pas de toujours vérifier si vos critères de filtrage sont corrects en exécutant raw find
:
find . -size +100k
Ou, vous pouvez même faire une copie de sauvegarde avant de supprimer :
find . -size +100k -exec cp --parents {} ~/backup \;
python est installé sur tous les systèmes d'exploitation basés sur Unix, alors pourquoi ne pas l'utiliser à la place de bash ?
Je trouve toujours python plus lisible que awk
et sed
magique.
Voici le code python que j'aurais écrit :
import os
Kb = 1024 # Kilo byte is 1024 bytes
Mb = Kb*Kb
Gb = Kb*Kb*Kb
for f in os.listdir("."):
if os.stat(f).st_size>100*Kb:
os.remove(f)
Et ceci est la version à une ligne avec python -c
python -c "import os; [os.remove(f) for f in os.listdir('.') if os.stat(f).st_size>100*1024]"
Et si vous voulez appliquer la recherche de manière récursive, voyez ceci