C'est standard ls -l
production.
user@linux:~$ ls -l
total 0
-rw-rw-r-- 1 user user 0 Nov 1 00:00 file01
-rw-rw-r-- 1 user user 0 Nov 1 00:00 file02
-rw-rw-r-- 1 user user 0 Nov 1 00:00 file03
user@linux:~$
Serait-il possible d'ajouter une nouvelle ligne comme celle-ci?
-rw-rw-r-- 1 user user 0 Nov 1 00:00 file01
-rw-rw-r-- 1 user user 0 Nov 1 00:00 file02
-rw-rw-r-- 1 user user 0 Nov 1 00:00 file03
ls -l | sed G
(celui-ci est un idiome commun et sur la sed
FAQ ).
Ou (probablement plus rapide, peu importe probablement pour la sortie (probablement courte) de ls -l
):
ls -l | paste -d '\n' - /dev/null
Ceux-ci insèrent une ligne vierge après chaque ligne de la sortie de ls -l
.
Maintenant, si vous voulez une ligne vide après chaque fichier décrit par ls -l
, ce qui serait différent s'il y a des fichiers dont le nom contient des caractères de nouvelle ligne, vous devriez faire quelque chose comme:
for f in *; do ls -ld -- "$f" && echo; done
(qui ignorerait également la ligne total
).
Ou vous pouvez utiliser ls -ql
qui vous assurerait d'obtenir une ligne par fichier (les caractères de nouvelle ligne, comme tous les caractères de contrôle, seraient rendus comme ?
(au moins dans les paramètres régionaux POSIX)).
Utilisation de awk
:
ls -l | awk '{printf "%s\n\n", $0}'
NAME
pr - convert text files for printing
Entrelacement avec une seule ligne vide, sans ajout d'en-tête:
… | pr -dt
Un de plus:
ls (options) | while read LINE; do
echo "$LINE
"
done