Je cherche une commande Unix pour imprimer les fichiers avec sa taille. Je l'ai utilisé mais cela n'a pas fonctionné.
find . -size +10000k -print.
Je veux imprimer la taille du fichier avec le nom du fichier/répertoire.
find . -size +10000k -exec ls -sd {} +
Si votre version de find
n'accepte pas la notation +
(Qui agit plutôt comme xargs
le fait), vous pouvez utiliser (GNU find
et xargs
, donc find
prend probablement en charge +
de toute façon):
find . -size +10000k -print0 | xargs -0 ls -sd
ou vous pouvez remplacer le +
par \;
(et vivre avec l'inefficacité relative de cela), ou vous pouvez vivre avec des problèmes causés par des espaces dans les noms et utiliser le portable:
find . -size +10000k -print | xargs ls -sd
Le -d
Sur les commandes ls
garantit que si un répertoire est trouvé (peu probable, mais ...), les informations du répertoire seront imprimées, pas les fichiers qu'il contient. Et si vous recherchez des fichiers de plus de 1 Mo (comme le suggère maintenant un commentaire supprimé), vous devez ajuster le paramètre +10000k
Sur 1000k
Ou peut-être +1024k
, ou +2048
(pour les blocs de 512 octets, l'unité par défaut de -size
). Cela listera la taille puis le nom du fichier. Vous pouvez éviter le recours à -d
En ajoutant -type f
À la commande find
, bien sûr.
La recherche peut être utilisée pour imprimer la taille du fichier en octets avec% s en tant que printf. % h /% f affiche le préfixe de répertoire et le nom de fichier, respectivement.\n force une nouvelle ligne.
Exemple
find . -size +10000k -printf "%h/%f,%s\n"
Sortie
./DOTT/extract/DOTT/TENTACLE.001,11358470
./DOTT/Day Of The Tentacle.nrg,297308316
./DOTT/foo.iso,297001116
En supposant que vous ayez GNU trouver:
find . -size +10000k -printf '%s %f\n'
Si vous voulez une largeur constante pour le champ de taille, vous pouvez faire quelque chose comme:
find . -size +10000k -printf '%10s %f\n'
Notez que -size +1000k
sélectionne des fichiers d’au moins 10 240 000 octets (k
vaut 1024, et non 1 000). Vous avez dit dans un commentaire que vous vouliez des fichiers de plus de 1 M; si c'est 1024 * 1024 octets, alors ceci:
find . -size +1M ...
fera l'affaire - sauf qu'il imprimera également la taille et le nom des fichiers exactement 1024 * 1024 octets. Si cela compte, vous pouvez utiliser:
find . -size +1048575c ...
Vous devez décider quel critère vous voulez.