Disons que dans mon dossier, ~/list
j'ai une grande quantité de dossiers chacun avec leurs propres sous-dossiers et sous-sous-dossiers, etc., et il y a beaucoup de fichiers presque à chaque niveau. Cependant, certains de ces fichiers et dossiers sont vides, alors comment puis-je les parcourir récursivement pour trouver les fichiers et dossiers vides? Et puis les afficher dans une liste d'emplacements de fichiers afin que je sache où chacun est (il devrait également être clair quel est un fichier et quel est un dossier car tous les fichiers n'ont pas d'extensions de fichier). J'utilise Ubuntu GNOME 15.10 avec GNOME 3.18.
Veuillez noter qu'il serait également très utile s'il me disait également si un fichier avait l'air vide mais ne l'était pas (par exemple s'il contenait des espaces ou des sauts de ligne ou quelque chose du genre). Et ferait la différence entre un vrai fichier vide et un qui semble juste vide dans la sortie.
Réponses:
De
man find
Donc, pour trouver à la fois des fichiers et des répertoires vides, il suffit de faire
Pour indiquer le type, vous pouvez utiliser le
%y
spécificateur de format de sortiepar exemple
ou utiliser un programme externe comme
ls
, qui comprend une--classify
optionc'est à dire
Si votre définition de `` vide '' est développée pour inclure des fichiers contenant uniquement des espaces, alors cela devient plus compliqué - et plus intensif en calcul, car vous devez maintenant ouvrir au moins tous les fichiers non vides et examiner leur contenu. La façon la plus efficace à laquelle je peux penser du haut de ma tête serait quelque chose comme
(soit vide, OU un fichier ET grep ne détecte pas au moins un caractère non vide). Mais il y a probablement une meilleure façon.
la source
Du
~/list
dossier:pour lister les répertoires vides et
pour lister les fichiers vides.
pour lister les dossiers et fichiers vides, y compris les espaces blancs et les lignes vides
la source
[ `grep -c [[:alnum:]] "{}"` -eq 0 ]
laissera passer les fichiers contenant uniquement des caractères qui ne sont pas dans l'[A-Za-z0-9]
ensemble.