Comment obtenir une liste de noms de fichiers sur différentes lignes

116

Je veux obtenir une liste de tous les fichiers dans un répertoire, comme avec ls, afin que chaque nom de fichier soit sur une ligne distincte, sans les détails supplémentaires fournis par ls -l. J'ai regardé ls --helpet n'ai pas trouvé de solution. J'ai essayé de faire

ls -l | cut --fields=9 -d" "

mais lsn'utilise pas un nombre fixe d'espaces entre les colonnes. Une idée sur la façon de procéder, de préférence en une seule ligne?

Amir Rachum
la source

Réponses:

259

ls -1

C'est un nombre, pas petit L.

Šimon Tóth
la source
5
Je vois cela dans la documentation: cross -x, virgules -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C Je ne sais pas comment ils en ont trouvé certains.
Alexander Taylor
23

ls -1. De l'aide:

-1 liste un fichier par ligne

Fonctionne sur cygwin et FreeBSD, donc ce n'est probablement pas trop spécifique à GNU.

jhwist
la source
Fonctionne également sur Ubuntu. Merci
Yonatan Simson
12

solution sans tuyauterie :-)

 ls --format single-column

Notez que les options longues ne sont prises en charge que sur les coreutils GNUBSD ls ne prend en charge que les arguments courts-1

rene
la source
6

Peut-être:

ls | awk '{print $NF}'
Eelvex
la source
note: un nom de fichier avec des espaces tels que "pommes et poires.jpg" deviendra "pears.jpg"
oknate
4

ls | cat ... ou éventuellement, ls -1

Johan Kotlinski
la source
4
Veuillez éviter l'utilisation inutile de chat :)
jhwist
3
catn'est pas inutile dans ce cas. Il formate la sortie de lsdans une colonne comme OP le demande.
Felix Eve
3

Utilisez la commande sed pour lister des colonnes uniques

ls -l | sed 's/\(^[^0-9].\*[0-9]\*:[0-9]\*\) \(.*\)/\2/'
vara
la source
ls -lproduit le même résultat que votre réponse entière. Je ne sais pas ce qui sedest ajouté ici ...
Felix Eve
3

Essaye ça:

$ ls | xargs -n num

Voici le numnombre de colonnes dans lesquelles vous souhaitez lister.

abeille
la source
1

vous pouvez d'abord l'utiliser. il affichera un fichier par ligne.

ls -l | sed 's /(.*) (. *) $ / \ 2 /'

ou bien vous pouvez utiliser ainsi

trouver . -maxdepth 1 | sed 's /.///'

les deux choses sont les mêmes.

Manikandan Rajendran
la source
J'obtiens l'erreursed: -e expression #1, char 16: invalid reference \2 on `s' command's RHS
Felix Eve
0

Cela fera aussi

ls -l | awk '{print $NF}'
Vicky
la source
1
En quoi est-ce pratiquement différent de la réponse d'Eelvex ?
Tous les travailleurs sont essentiels
0

Cela fonctionne également: echo -e "\ n $ (ls)"

Anshul Ayushya
la source