Як отримати список назв файлів у різних рядках


116

Я хочу отримати список усіх файлів у каталозі, як, наприклад, з lsтаким, щоб кожне ім'я файлу було в окремому рядку без додаткових деталей, наданих користувачем ls -l. Я подивився ls --helpі не знайшов рішення. Я намагався робити

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

але lsне використовує фіксовану кількість пробілів між стовпцями. Будь-яка ідея, як це зробити, бажано в один рядок?

Відповіді:


259

ls -1

Це число, не маленьке L.


5
Я бачу це в документації: хрест -x, коми -m, горизонтальний -x, довгий -l, одноколонний -1, багатослівний -l, вертикальний -C Я не впевнений, як вони придумали деякі з них.
Олександр Тейлор

23

ls -1. З довідки:

-1 перерахуйте один файл у рядку

Працює на cygwin та FreeBSD, тому, мабуть, не надто GNU-специфічно.


Працює і на Ubuntu. Спасибі
Йонатан Сімсон

12

розчин без трубопроводів :-)

 ls --format single-column

Зауважте, що довгі параметри підтримуються лише в GNU coreutils, де BSD ls підтримує лише короткі аргументи-1


6

Можливо:

ls | awk '{print $NF}'

Примітка: назва файлу з пробілами, такими як "яблука та груші.jpg" перетвориться на "pears.jpg"
oknate


3

Використовуйте команду sed для переліку окремих стовпців

ls -l | sed 's/\(^[^0-9].\*[0-9]\*:[0-9]\*\) \(.*\)/\2/'

ls -lдає такий же вихід, як і вся відповідь. Не впевнений, що sedтут додає ...
Фелікс Єва

3

Спробуйте це:

$ ls | xargs -n num

Ось numкількість стовпців, які ви хочете внести до списку.


1

спочатку ви можете скористатися цим. він відображатиме один файл у рядку.

лс -л | sed 's /(.*) (. *) $ / \ 2 /'

інакше ви можете таким чином скористатися

знайти. -maxdepth 1 | sed 's /.///'

обидві речі однакові.


Я отримую помилкуsed: -e expression #1, char 16: invalid reference \2 on `s' command's RHS
Фелікс Єва


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.