Как получить список файлов и файлов-симлинков в виде списка?

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
root
Сообщения: 938
Зарегистрирован: 16 фев 2017, 20:03
Решено: 5
Откуда: г. Хабаровск
Благодарил (а): 268 раз
Поблагодарили: 262 раза
Контактная информация:

Как получить список файлов и файлов-симлинков в виде списка?

#1

20 авг 2018, 11:46

Дано: Допустим имеем на входе параметр ~
Задача:
1) Вывести пути (или названия) файлов в ~ в виде списка (т.е. с переходом на новую строку) в терминал
2) Вывести пути (или названия) файлов и файлов-симлинков (т.е. симлинки на папки в расчет не берем) в ~ в виде списка в терминал
Условие: вхождение только в родительскую папку ~, т.е. без рекурсии.

Как реализовать в терминале/скрипте? :smile:

Решение Chocobo » 20 авг 2018, 12:50
root писал(а):
20 авг 2018, 12:40
без рекурсии.
нутк есть -maxdepth у файнда)

Перейти к ответу ➙
Вы не готовы! :pc2:
Изображение

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Как получить список файлов и файлов-симлинков в виде списка?

#2

20 авг 2018, 12:08

root, юзай find

Код: Выделить всё

▶ touch /tmp/tmp/file1
▶ ln -s /tmp/tmp/file1 /tmp/tmp/link1                                                                                     
▶ ls -l /tmp/tmp                                                                                                          
-rw-rw-r-- 1 chocobo chocobo  0 авг 20 12:03 file1
lrwxrwxrwx 1 chocobo chocobo 14 авг 20 12:03 link1 -> /tmp/tmp/file1
root писал(а):
20 авг 2018, 11:46
ывести пути (или названия) файлов в ~ в виде списка (т.е. с переходом на новую строку) в терминал

Код: Выделить всё

▶ find  /tmp/tmp/ -type f -printf %f\\n\\r  
file1
root писал(а):
20 авг 2018, 11:46
2) Вывести пути (или названия) файлов и файлов-симлинков (т.е. симлинки на папки в расчет не берем) в ~ в виде списка в терминал

Код: Выделить всё

▶ find -L /tmp/tmp/ -type f -printf %f\\n\\r
file1
link1

Код: Выделить всё

       -L     Follow  symbolic  links.   When find examines or prints information about files, the information used shall be
              taken from the properties of the file to which the link points, not from the link itself (unless it is a  bro‐
              ken symbolic link or find is unable to examine the file to which the link points).  Use of this option implies
              -noleaf.  If you later use the -P option, -noleaf will still be in effect.  If -L is in effect and  find  dis‐
              covers  a  symbolic link to a subdirectory during its search, the subdirectory pointed to by the symbolic link
              will be searched.
Изображение
   
Изображение

Аватара пользователя

WWolf
Сообщения: 3898
Зарегистрирован: 14 фев 2018, 00:51
Решено: 31
Откуда: Краснодар
Благодарил (а): 1688 раз
Поблагодарили: 1213 раз
Контактная информация:

Как получить список файлов и файлов-симлинков в виде списка?

#3

20 авг 2018, 12:16

ls -1s | grep 'N'
где N = 4 - папка, >4 файл, 0 симлинк


неее... фигня... по другому признаку надо фильтровать и ещё штудировать man ls

Аватара пользователя

Автор темы
root
Сообщения: 938
Зарегистрирован: 16 фев 2017, 20:03
Решено: 5
Откуда: г. Хабаровск
Благодарил (а): 268 раз
Поблагодарили: 262 раза
Контактная информация:

Как получить список файлов и файлов-симлинков в виде списка?

#4

20 авг 2018, 12:40

Chocobo, find - рекурсивная программа. Т.е. фильтровать вывод, грубо говоря, / - непрофитно. И твой код здесь find /tmp/tmp/ -type f -printf %f\\n\\r входит в подпапки и выводит только название файлов. А find -L /tmp/tmp/ -type f -printf %f\\n\\r вовсе начинает "гулять" по содержимому симлинка на папку из-за опции -L.

Это не подходит, потому что:
root писал(а):
20 авг 2018, 11:46
Условие: вхождение только в родительскую папку ~, т.е. без рекурсии.
-----------------
WWolf писал(а):
20 авг 2018, 12:16
ls -1
Выводит папки, нужны только файлы и "файлы и симлинк-файлы"
Вы не готовы! :pc2:
Изображение

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Как получить список файлов и файлов-симлинков в виде списка?

#5

20 авг 2018, 12:50

root писал(а):
20 авг 2018, 12:40
без рекурсии.
нутк есть -maxdepth у файнда)
Изображение
   
Изображение

Аватара пользователя

Автор темы
root
Сообщения: 938
Зарегистрирован: 16 фев 2017, 20:03
Решено: 5
Откуда: г. Хабаровск
Благодарил (а): 268 раз
Поблагодарили: 262 раза
Контактная информация:

Как получить список файлов и файлов-симлинков в виде списка?

#6

20 авг 2018, 12:57

Chocobo, perfect! Никогда больше не буду читать man-ы через интернет (в родном man-е есть эта опция, а здесь http://www.opennet.ru/man.shtml?category=1&topic=find, например, её нет = устаревшая информация). Спасибо, выручил!) А то так бы и бился головой о стену) :dash2:
Вы не готовы! :pc2:
Изображение

Закрыто

Вернуться в «Программирование, скриптинг, виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя