J'ai besoin d'organiser un disque dur externe de sorte qu'il n'y ait pas plus de 500 dossiers dessus. Le volet "Propriétés" d'Ubuntu affiche uniquement le nombre de fichiers, pas le nombre de dossiers.
Existe-t-il une simple ligne de commande qui me dira le nombre de sous-répertoires?
Je dois compter récursivement, et le lecteur est un disque dur externe monté sur /media/MUSIC/
. C'est pour un système stéréo de voiture dont la documentation indique qu'il ne lit que les 500 premiers dossiers.
linux
command-line
Dean plutôt
la source
la source
grep -c
lewc -l
. C'est peut-être juste moi.\nd
(où\n
est le caractère NL).ls
sortie n'est pas censée être canalisée . De plus, cela sera beaucoup plus lent car il doit sortir tout l'arbre et ensuite exécuter grep à traversTrouver tous les dossiers au total, y compris les sous-répertoires?
... ou trouver tous les dossiers dans le répertoire racine (hors sous-répertoires)?
la source
*foo*
pour mettre en italique: foo )find /path -not -iname '*.mp3' | wc -l
pour filtrer les MP3, ou pour utiliser à la fois les MP3 et les WAVfind /path -not -iname '*.mp3' -not -iname '*.wav' | wc -l
Les nouvelles lignes sont des caractères valides dans les noms de répertoire. Je suggère de laisser
find
imprimer une ligne vide pour chaque répertoire trouvé, puis de laisserwc
compter ces lignes.la source
Essayez ce qui suit [voir ci-dessous]:
Cela affichera une liste à une colonne du répertoire actuel, avec des barres obliques de fin pour les éléments qui sont des sous-répertoires, puis comptera les lignes avec les barres obliques.
EDIT: vous devriez probablement aller avec la réponse de Quack Quichotte, car elle est un peu plus explicite, mais j'ai corrigé la mienne (après avoir pris en compte les suggestions de Quack).
la source
-1
puisque ls détectera le canal et ne formatera pas les colonnes. vous pouvez également saisir des listes récursives avec-R
, mais alors vous voudrez probablement chercher"/$"
pour ne faire correspondre que les barres obliques de fin (ou le nombre sera désactivé). version finale:ls -Rp | grep "/$" | wc -l
.
(c'est-à-dire/mount/point
) dans son nombre, la version ls dans mon commentaire ci-dessus ne le sera pas. ces nombres diffèrent de 1, que vous pourriez utiliser/mount/point/*
dans la commande find pour corriger cela (en supposant qu'aucun répertoire de points caché).J'ai écrit ffcnt pour accélérer le comptage récursif des fichiers dans des circonstances spécifiques: disques rotatifs et systèmes de fichiers qui prennent en charge le mappage d'étendue.
Il peut être un ordre de grandeur plus rapide que que
ls
oufind
approches fondéesla source
Lorsqu'il existe un grand nombre de répertoires, des outils tels
tree
que la mise en place ou la suspension peuvent prendre une éternité, vous pouvez donc utiliser quelque chose de plus efficace.Le moyen le plus efficace de compter les répertoires auxquels je pense est le suivant, car
find
il n'en imprimera qu'un.
pour chaque dossier trouvé au lieu du chemin d'accès complet et du nom de fichier etwc
n'a besoin que d'itérer sur le nombre de caractères:Pour s'exclure
/mount/point
du calcul et ne compter que les sous-répertoires:la source
J'ai trouvé
du --inodes
utile, mais je ne suis pas sûr de la versiondu
requise. Sur Ubuntu 17.10, les travaux suivants:Combinez avec
| sort -nr
pour trier par ordre décroissant du nombre d'inodes contenus.la source
J'aime utiliser l'arborescence pour extraire le nombre de répertoires avec
Ou, mal utiliser find pour montrer que la plupart des dossiers se trouvent avec
la source
Pour trouver le nombre de dossiers et de répertoire dans le répertoire actuel
Tapez la commande suivante dans votre terminal
la source