213 votes

Fichier de suppression Linux de taille 0

Comment puis-je supprimer un certain fichier sous Linux si sa taille est 0. Je veux exécuter ceci dans une crontab sans script supplémentaire.

 l filename.file | grep 5th-tab | not eq 0 | rm
 

Quelque chose comme ça?

327voto

Paul Tomblin Points 83687

Cela supprimera tous les fichiers d'un répertoire (et inférieur) de taille zéro.

 find /tmp -size  0 -print0 |xargs -0 rm
 

Si vous voulez juste un fichier particulier;

 if [ ! -s /tmp/foo ] ; then
  rm /tmp/foo
fi
 

274voto

James.Xu Points 3320

vous voudriez utiliser find :

  find . -size 0 -delete
 

148voto

Antonio Points 2246
 find [Optional* starting directory name] -type f -empty -delete
 

Remarque: -type f est nécessaire car les répertoires sont également marqués comme étant de taille zéro.


* = Si non optionnel pour votre système, il suffit de mettre .

5voto

cdarke Points 8020

Sur Linux, le stat(1) de commande est utile lorsque vous n'avez pas besoin de trouver(1):

(( $(stat -c %s "$filename") )) || rm "$filename"

La commande stat ici nous permet de nous obtenir la taille du fichier, c'est l' -c %s (voir les pages man pour les autres formats). Je suis en cours d'exécution de la stat du programme et à la capture de sa sortie, c'est l' $( ). Cette sortie est vu numériquement, c'est que l'extérieur de la (( )). Si le zéro est donné pour la taille, ce qui est FAUX, de sorte que la deuxième partie de l'OU est exécutée. Non-zéro (fichier non vide) sera VRAIE, de sorte que le rm ne sera pas exécuté.

1voto

Harrison Points 303

Pour une suppression non récursive (en utilisant du et awk):

 rm `du * | awk '$1 == "0" {print $2}'`
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X