Nous commençons juste une classe UNIX et apprenons une variété de commandes Bash. Notre mission consiste à exécuter diverses commandes sur un répertoire contenant également un certain nombre de dossiers.
Je sais comment lister et compter tous les fichiers normaux du dossier racine en utilisant:
find . -type l | wc -l
Mais j'aimerais savoir où aller à partir de là pour trouver le plus gros fichier de tout le répertoire. J'ai vu quelque chose concernant une du
commande, mais nous ne l'avons pas appris, donc dans le répertoire des choses que nous avons apprises, je suppose que nous devons en quelque sorte la connecter à la ls -t
commande.
Et pardonnez-moi si mon «jargon» n'est pas correct, je m'y habitue encore!
man
suivi de la commande qui vous intéresse. Up affichera une belle entrée manuelle pour cette commande (appuyez surq
pour revenir à la ligne de commande).Réponses:
Citation de ce lien-
la source
'%s %p\n'
avec'%p\n'
et en ajoutant|xargs ls -lh
à la findu -am . | sort -nr | grep '\..*\.' | head
. Lem
est d'afficher la taille du fichier en mégaoctets et utiliségrep
pour afficher les lignes avec au moins deux points, le premier est dans le./
dans le chemin, le second est dans l'extension de fichier, par exemple.mov
.Pour trouver les 25 premiers fichiers dans le répertoire actuel et ses sous-répertoires:
find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25
Cela affichera les 25 premiers fichiers en les triant en fonction de la taille des fichiers via la commande piped "sort -nr -k5".
Idem mais avec des tailles de fichier lisibles par l'homme:
find . -type f -exec ls -alh {} \; | sort -hr -k5 | head -n 25
la source
les sorties
Si vous voulez juste le nom du fichier:
Cela évite d'utiliser
awk
et vous permet d'utiliser les indicateurs que vous voulezls
.Mise en garde . Parce que
xargs
tente d'éviter de construire des lignes de commande trop longues, cela peut échouer si vous l'exécutez sur un répertoire avec beaucoup de fichiers carls
finit par s'exécuter plus d'une fois. Ce n'est pas un problème insurmontable (vous pouvez collecter lahead -n 1
sortie de chaquels
invocation et l'exécuter àls -S
nouveau, en boucle jusqu'à ce que vous ayez un seul fichier), mais cela gâche quelque peu cette approche.la source
xargs
, je t'ai négligé +1find . -type f -print0 | xargs -0 ls -lS | head -n 1
xargs
exécuté. Pour corriger le tri ajouter:find . -type f -print0 | xargs -0 ls -lS | sort -rk 5 | head -n 10
. J'ai travaillé sur OSX pour moi.Il n'y a pas de commande simple disponible pour trouver les plus gros fichiers / répertoires sur un système de fichiers Linux / UNIX / BSD. Cependant, la combinaison des trois commandes suivantes (à l'aide de tubes) vous permet de trouver facilement la liste des fichiers les plus volumineux:
Si vous voulez une sortie plus lisible par l'homme, essayez:
Où,
la source
Cela répertorie les fichiers de manière récursive s'ils sont des fichiers normaux, les trie par le 7ème champ (qui est la taille dans ma
find
sortie; vérifiez le vôtre) et n'affiche que le premier fichier.La première option
find
est le chemin de départ de la recherche récursive. Un type def
recherche de fichiers normaux. Notez que si vous essayez d'analyser cela en tant que nom de fichier, vous risquez d'échouer si le nom de fichier contient des espaces, des retours à la ligne ou d'autres caractères spéciaux. Les optionssort
varient également selon le système d'exploitation. J'utilise FreeBSD.Une solution "meilleure" mais plus complexe et plus lourde serait de
find
parcourir les répertoires, mais peut-être utiliserstat
pour obtenir les détails sur le fichier, puis peut-être utiliserawk
pour trouver la plus grande taille. Notez que la sortie destat
dépend également de votre système d'exploitation.la source
+7
argument? Sur ma machine, sort se plaint simplement de ne pas trouver un fichier appelé+7
.sort
votre système. J'utilise OS X 10.4 pour le moment, où l'utilisation dérive du tri de FreeBSD :sort [-cmus] [-t separator] [-o output-file] [-T tempdir] [-bdfiMnr] [+POS1 [-POS2]] [-k POS1[,POS2]] [file...]
... Notez le+POS [-POS2]
. Cela fonctionne également dans les versions actuelles de FreeBSD.-k
arg, par exemple.sort -k 7
. edit: par OSX 10.5, la page de manuel pour le tri semble avoir changé pour la version que j'ai.[+POS1] [-POS2]
notation est juste une ancienne. Pour autant que je sache, cette notation est toujours supportée par le tri GNU moderne, bien que maintenant que je regarde, il semble avoir été supprimé de la page de manuel de tri après la version 5.1. Vous pouvez le voir dans la page de manuel pour le tri pour FreeBSD 4.11 . Je suppose que je n'ai pas lu la page de manuel de sort depuis la sortie de FreeBSD 5.0!+POS1
compte les paramètres de tri à partir de zéro, tandis que les paramètres de tri sont comptés à partir-k POS1
de un.Cela trouvera le plus grand fichier ou dossier dans votre répertoire de travail actuel:
Pour trouver le plus gros fichier dans tous les sous-répertoires:
la source
ls
. Dans mes tests, le-S
drapeau listera un fichier par ligne. J'ai corrigé la deuxième commande. J'espère que maintenant c'est la preuve complète. Je vous remercie.Sur Solaris, j'utilise:
ou
parce que tout ce qui est publié ici n'a pas fonctionné Cela trouvera le plus gros fichier dans
$PWD
et sous-répertoires.la source
Essayez le one-liner suivant (affichez les 20 plus gros fichiers):
ou (tailles lisibles par l'homme):
Donc, ces alias sont utiles à avoir dans vos fichiers rc :
la source
Essayez la commande suivante:
Cela imprimera le plus grand nom et taille de fichier et plus de 500M. Vous pouvez déplacer le
if($1 > 500000)
, et il imprimera le plus gros fichier du répertoire.la source
du -aS /PATH/TO/folder | sort -rn | head -2 | tail -1
ou
du -aS /PATH/TO/folder | sort -rn | awk 'NR==2'
la source
Ce script simplifie la recherche des fichiers les plus volumineux pour une action ultérieure. Je le garde dans mon répertoire ~ / bin et mets ~ / bin dans mon $ PATH.
la source
C'est une manière assez simple de le faire:
Et vous aurez ceci:
8445 examples.desktop
la source
1***
doit-on faire à la fin? J'obtiens une erreur "aucune correspondance trouvée" pour cet argument.Solution Linux: Par exemple, vous voulez voir la liste de tous les fichiers / dossiers de votre répertoire personnel (/) en fonction de la taille du fichier / dossier ( ordre décroissant ).
sudo du -xm / | sort -rn | plus
la source
Pour répertorier le fichier le plus volumineux dans un dossier
La sortie de
ls -sh
est une vue dimensionnées
eth
compréhensible par l' homme du numéro de taille du fichier.Vous pourriez utiliser
ls -shS /pathFolder | head -n 1
. Le plus grandS
desls
ordonne déjà la liste des plus gros fichiers aux plus petits, mais le premier résultat est la somme de tous les fichiers dans ce dossier. Donc, si vous voulez simplement lister le plus gros fichier, un fichier, vous devezhead -n 2
vérifier le "résultat de la deuxième ligne" ou utiliser le premier exemple avecls sort head
.la source
la source