J'ai donc obtenu un répertoire rempli d'autres répertoires et je me demandais s'il était possible de supprimer des fichiers sans taille. En règle générale, ces fichiers sont de 0 octet et comme je veux fusionner tous ces sous-répertoires, je pourrais remplacer un fichier parfaitement légitime par un fichier de 0 octet en apesanteur, et voilà mon fichier légitime. Est-il possible de supprimer les fichiers à zéro octet?
command-line
files
user245115
la source
la source
-empty
place de-size 0b
.Recherchez et supprimez récursivement tous les fichiers d'une taille de 0:
Exemple:
la source
Vous pouvez également le faire directement dans le shell. Cela peut être utile si vous ne souhaitez pas supprimer les fichiers cachés vides (ceux dont le nom commence par a
.
). Bien que vous puissiez également le faire avecfind
, une alternative serait d'utiliser le shell lui-même:Explication
shopt -s globstar
: active l'option globstar pour bash qui fait**
correspondre un ou plusieurs sous-répertoires.**/*
correspondra à tous les fichiers et répertoires du répertoire actuel et à tous ses sous-répertoires.for file in **/*; do ...; done
: parcourir tous les fichiers et répertoires trouvés;[ ! -s "$file" ]
:[ -s "$file" ]
est vrai si le fichier existe et n'est pas vide. Par conséquent,[ ! -s "$file" ]
(l'!
inverse le test) est vrai si le fichier n'existe pas ou s'il est vide.[ -f "$file" ]
: vrai si le fichier est un fichier normal. Pas un répertoire ou un fichier de périphérique ou un lien symbolique, etc.rm "$file"
: supprimer le fichier.La
&&
veiller à ce que la commande suivante est exécutée uniquement si la précédente a réussi donc ce ne supprimer des fichiers vides, réguliers.la source
Bien que la plupart des réponses ci-dessus soient correctes, jetez un œil à cette commande:
bien que vous puissiez exécuter cette commande:
cela supprimera tous les fichiers vides.
Vous pouvez jeter un œil à ces fichiers avant de les supprimer:
la source
-type f
,-empty
supprimera également les répertoires vides. Je viens de consulter la page de manuel.