Comment modifier le format de la date d’un ls sous Linux ?

Avec mon collègue, nous avons cherché à modifier le format de la date affichée par la commande :

ls -ltr

[fatiha@monServeur]$ ls -ltr
total 0
-rw-r–r–    1 root     root            7 May 30 14:14 test
-rw-r–r–    1 root     root            7 May 30 14:14 test1
-rw-r–r–    1 root     root            7 May 30 14:14 test2

En effet, voulant ensuite parser et concaténer le résultat, nous souhaitions un format plus simple du style YYYYMMDD.

Comment faire dans ce cas ? Il suffit d’ajouter un paramètre à la commande ls.

[fatiha@monServeur]$ ls -ltrh  –time-style= »+%Y%m%d »
total 0
-rw-r–r– 1 root root 7 20130530 test
-rw-r–r– 1 root root 7 20130530 test1
-rw-r–r– 1 root root 7 20130530 test2

Pour en savoir plus sur le format des dates, tapez « man date » sous linux.

Comment afficher la liste des répertoires sous Linux à partir du répertoire courant ?

Depuis le répertoire courant, cela donne :

ls -Rl | egrep « ^d »

Le petit ^signifie « commence par ». On recherche donc toutes les lignes commençant par d avec la commande ls (lister). d voulant dire directory ou répertoire en français. L’option -R indique qu’il faut parcourir aussi les sous-répertoires, … c’est l’option récursive. La commande egrep est utilisée lorsqu’on veut faire des recherches avec des expressions régulières en paramètre.

Nous pouvons bien sûr rediriger les résultats dans un fichier :

ls -Rl | egrep « ^d » > /home/fatiha/listeDeTousLesRepertoires

Nous pouvons aussi facilement les compter avec la commande wc :

ls -Rl | egrep « ^d » | wc -l

Exemple sur mon ordi :

[fatiha@localhost ~]$ ls -Rl | egrep « ^d » | wc -l
2205

Vous pourrez voir apparaître quelques erreurs au cas où vous n’auriez pas le droit de lister le contenu d’un répertoire « Permission denied », exemple :

ls: cannot open directory ./Téléchargements/android-sdk-linux: Permission denied
ls: cannot open directory ./workspace/HelloFedora/bin/res/drawable-hdpi: Permission denied
ls: cannot open directory ./workspace/HelloFedora/bin/res/drawable-ldpi: Permission denied
ls: cannot open directory ./workspace/HelloFedora/bin/res/drawable-mdpi: Permission denied
ls: cannot open directory ./workspace/HelloFedora/gen/com: Permission denied

Dans ce cas, soit vous changez les droits, soit vous redirigez les erreurs lors du lancement de la ligne de commande. Cela donnerait :

ls -Rl 2>/dev/null | egrep « ^d » | wc -l

Vous souhaitez afficher uniquement le nom du répertoire, c’est possible en utilisant la commande awk et en lui disant de n’afficher que la 9e colonne :

ls -Rl 2>/dev/null | egrep « ^d » | awk ‘{ print $9 }’

Vous pouvez classer les noms par ordre alphabétique avec la commande sort :

ls -Rl 2>/dev/null | egrep « ^d » | awk ‘{ print $9 }’ | sort

Calculer rapidement le nombre de fichiers d’un répertoire courant sous Linux

Pour calculer rapidement le nombre de fichiers d’un répertoire courant sous Linux, cela se fait via une ligne de commande.

  • Se positionner à la racine du répertoire en question
  • Lancez la commande ls -lR * | grep ^- | wc -l

Cette commande combine :
– la commande ls pour lister, l’option R sert à parcourir les répertoires
– la commande grep pour n’afficher que les lignes commençant par un -, à savoir les fichiers. En effet, les répertoires commencent par la lettre d quand on les liste avec un ls.
– la commande wc qui sert à compter les lignes quand elle est utilisée avec l’option l

ls -lR * | grep ^- | wc -l

  • Cas pratique

Dans /tmp, je crée un répertoire test :
cd /tmp
mkdir test

Puis, je crée 5 répertoires :
cd test
mkdir rep1 rep2 rep3 rep4 rep5

Je crée 3 fichiers dans le répertoire 1
cd rep1
touch fic1 fic2 fic3

Je crée 2 fichiers dans le répertoire 3 :
cd /tmp/test
cd rep3
touch fic4 fic5

Les autres répertoires sont vides.

Je lance ma commande pour compter le nombre de fichiers contenus dans /tmp/test :
cd /tmp/test
ls -lR * | grep ^- | wc -l

Le résultat est 5.

Aide-mémoire Unix