Jak uzyskać listę nazw plików w różnych wierszach

116

Chcę uzyskać listę wszystkich plików w katalogu, na przykład z ls, tak aby każda nazwa pliku znajdowała się w osobnym wierszu, bez dodatkowych szczegółów dostarczonych przez ls -l. Spojrzałem ls --helpi nie znalazłem rozwiązania. Próbowałem to zrobić

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

ale lsnie używa stałej liczby odstępów między kolumnami. Masz pomysł, jak to zrobić, najlepiej w jednej linii?

Amir Rachum
źródło

Odpowiedzi:

259

ls -1

To jest liczba, a nie mała L.

Šimon Tóth
źródło
5
widzę to w dokumentacji: cross -x, przecinki -m, poziome -x, długie -l, jednokolumnowe -1, gadatliwe -l, pionowe -C Nie jestem pewien, jak wymyślili niektóre z nich.
Alexander Taylor
23

ls -1. Z pomocy:

-1 wyświetla jeden plik w każdym wierszu

Działa na cygwin i FreeBSD, więc prawdopodobnie nie jest zbyt specyficzne dla GNU.

jhwist
źródło
Działa również na Ubuntu. Dzięki
Yonatan Simson
12

rozwiązanie bez orurowania :-)

 ls --format single-column

Zauważ, że długie opcje są obsługiwane tylko w coreutils GNU, gdzie BSD ls obsługuje tylko krótkie argumenty-1

odnowić
źródło
6

Być może:

ls | awk '{print $NF}'
Eelvex
źródło
uwaga: nazwa pliku ze spacjami, np. „jabłka i gruszkis.jpg”, zamieni się w „gruszki.jpg”
oknate.
4

ls | cat ... lub ewentualnie ls -1

Johan Kotlinski
źródło
4
Prosimy o unikanie bezużytecznego używania kota :)
jhwist
3
catnie jest w tym przypadku bezużyteczna. Formatuje wynik lsw jednej kolumnie, o co prosi OP.
Felix Eve
3

Użyj polecenia sed, aby wyświetlić listę pojedynczych kolumn

ls -l | sed 's/\(^[^0-9].\*[0-9]\*:[0-9]\*\) \(.*\)/\2/'
vara
źródło
ls -ldaje taki sam wynik, jak cała twoja odpowiedź. Nie jestem pewien, co sedtu dodaje ...
Felix Eve
3

Spróbuj tego:

$ ls | xargs -n num

Oto numliczba kolumn, w których chcesz wyświetlić listę.

honeytechiebee
źródło
1

najpierw możesz tego użyć. wyświetli jeden plik w każdym wierszu.

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

albo możesz w ten sposób użyć

odnaleźć . -maxdepth 1 | sed „s /.///”

obie rzeczy są takie same.

Manikandan Rajendran
źródło
Otrzymuję błądsed: -e expression #1, char 16: invalid reference \2 on `s' command's RHS
Felix Eve
0

To też wystarczy

ls -l | awk '{print $NF}'
Vicky
źródło
1
Czym to się praktycznie różni od odpowiedzi Eelvex ?
Wszyscy pracownicy są niezbędni
0

To też działa: echo -e "\ n $ (ls)"

Anshul Ayushya
źródło