web-dev-qa-db-fra.com

Comment ajouter une nouvelle ligne entre la sortie `ls -l`

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
13
Sabrina
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)).

21
Stéphane Chazelas

Utilisation de awk:

ls -l | awk '{printf "%s\n\n", $0}'
6
jesse_b
NAME
       pr - convert text files for printing

Entrelacement avec une seule ligne vide, sans ajout d'en-tête:

… | pr -dt

4
poige

Un de plus:

ls (options) | while read LINE; do
  echo "$LINE
"
done
2
WGroleau