Lister tous les dossiers et les fichiers d'un répertoire sous forme de table

Le 4 septembre 2022
bash

Voici un script Bash qui permet de lister tous les dossiers et les fichiers d’un répertoire et de les afficher sous forme de table :

bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash

# Récupérer le chemin du répertoire à lister (s'il n'est pas fourni en argument, utiliser le répertoire courant)
if [ -z "$1" ]; then
    directory=$(pwd)
else
    directory=$1
fi

# Récupérer la liste des dossiers et des fichiers du répertoire
files=$(ls -1 --group-directories-first $directory)

# Afficher les résultats à l'utilisateur sous forme de table
echo "Nom de fichier ou de dossier          Type"
echo "---------------------------------     ----"
while read file; do
    if [ -d "$directory/$file" ]; then
        type="dossier"
    else
        type="fichier"
    fi
    printf "%-35s %s\n" "$file" "$type"
done <<< "$files"

Ce script utilise la commande ls pour récupérer la liste des fichiers et des dossiers dans un répertoire donné, en les triant par ordre alphabétique et en plaçant les dossiers en premier. La commande printf est utilisée pour afficher les résultats sous forme de table, en utilisant l’option -35s pour aligner les noms de fichiers et de dossiers à gauche et l’option %s pour afficher le type à droite.

Notez que ce script peut être exécuté en tant qu’utilisateur normal et ne nécessite pas de privilèges spéciaux.