Comment puis-je afficher tous les fichiers supérieurs à 10 000 octets dans mon répertoire actuel et ses sous-répertoires.
A tenté ls -size +10k
mais cela n'a pas fonctionné.
find . -size +10k -exec ls -lh {} \+
la première partie de ceci est identique à la réponse @sputnicks, et trouve avec succès tous les fichiers dans le répertoire sur 10k (ne confondez pas k avec K), mon ajout, la deuxième partie exécute alors ls -lh
ou ls qui répertorie (-l) les fichiers par taille lisible par l'homme (-h). annuler le h si vous préférez. bien sûr, le {}
est le fichier lui-même, et le \+
est simplement une alternative à \;
qui en pratique \;
répéterait ou:
ls -l found.file; ls -l found.file.2; ls -l found.file.3
où \+
l'afficher comme une seule instruction ou:
ls -l found.file found.file.2 found.file.3
plus sur \; vs + avec find
De plus, vous voudrez peut-être que la liste soit classée par taille. Ce qui est relativement facile à réaliser. Je voudrais au -s
option pour ls
, donc ls -ls
puis le diriger vers sort -n
pour trier numériquement
qui deviendrait:
find . -size +10k -exec ls -ls {} \+ | sort -n
ou dans l'ordre inverse, ajoutez un -r:
find . -size +10k -exec ls -ls {} \+ | sort -nr
enfin, votre titre indique trouver le plus gros fichier du répertoire. Vous pouvez le faire en redirigeant ensuite le code vers tail
find . -size +10k -exec ls -ls {} \+ | sort -n | tail -1
vous trouverait le plus gros fichier du répertoire et de ses sous-répertoires.
notez que vous pouvez également trier les fichiers par taille en utilisant -S, et annuler la nécessité d'un tri. mais pour trouver le plus gros fichier, vous devez utiliser la tête afin
find . -size +10k -exec ls -lS {} \+ | head -1
l'avantage de le faire avec -S et non sort
en est un, vous n'avez pas besoin de taper sort -n
et deux, vous pouvez également utiliser -h
l'option de taille lisible par l'homme. qui est l'un de mes préférés à utiliser, mais n'est pas disponible avec les anciennes versions de ls
, par exemple, nous avons un ancien serveur centOs 4 au travail qui n'a pas -h
Essayez de faire ceci:
find . -size +10k -ls
Et si vous voulez utiliser le binaire ls
:
find . -size +10k -exec ls -l {} \;
Je me rends compte que la mission est probablement terminée depuis longtemps. Pour quelqu'un d'autre:
Vous êtes trop compliqué.
find . -size +10k
Je vais ajouter à la réponse @matchew (pas assez de points de karma pour commenter):
find . -size +10k -type f -maxdepth 1 -exec ls -lh {} \; > myLogFile.txt
-type f: spécifiez le type de fichier normal
-maxdepth 1: assurez-vous qu'il ne trouve que les fichiers dans le répertoire courant
Vous pouvez utiliser ls comme ça:
ls -lR | egrep -v '^d' | awk '$5>10240{print}'
Explication:
ls -lR # list recursivly
egrep -v '^d' # only print lines which do not start with a 'd'. (files)
imprimer uniquement les lignes où la cinquième colonne (taille) est supérieure à 10240 octets:
awk '$5>10240{print}'