Страница 1 из 1

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

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

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

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

Добавлено: 20 авг 2018, 12:08
Chocobo
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.

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

Добавлено: 20 авг 2018, 12:16
WWolf
ls -1s | grep 'N'
где N = 4 - папка, >4 файл, 0 симлинк


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

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

Добавлено: 20 авг 2018, 12:40
root
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
Выводит папки, нужны только файлы и "файлы и симлинк-файлы"

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

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

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

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