LINUX.ORG.RU

как вывести полный путь к файлам

 , ,


0

1

вывожу путь к нужной папке

p= find . -type d -name «$folder» #параметр $folder может меняться echo $p

результат - ./AXE/CNA5/LBN/2211

как вывести файлы в таком виде

./AXE/CNA5/LBN/2211/1.z ./AXE/CNA5/LBN/2211/234.z

т.е. все файлы которые находятся в данном каталоге

Ответ на: комментарий от paddlewan

да, а нужно в директории которая передается через переменную $folder искать файлы «*.z» т.е. что то типо find . -type d -name «$folder» -type f name «*.z»

чтобы выводил ./AXE/CNA5/LBN/2211/1.z

а не ./AXE/CNA5/LBN/2211/

название самих файлов мы не знаем, только расширение *.z и меняющийся каталог который передается через переменную $folder

krdgroup
() автор топика
Ответ на: комментарий от paddlewan

файлы не в том же каталоге что сам скрипт лежат а в дочерних в папках с названием которое передается в переменную $folder

find . ( -name «$folder» ); #выводит путь до папки

./AXE/TELLIN/2211

find . ( -name «$folder» ) -exec ls ‘{}’ ; #выводит сами файлы

1.z

как сделать чтобы выводило?

./AXE/TELLIN/2211/1.z

krdgroup
() автор топика
Ответ на: комментарий от krdgroup

Убедительная просьба: прочитай уже наконец, как форматируется текст и код в Markdown. Чтения на три абзаца. Ну кровь же из глаз!

Второе, ну есть man. Напиши man find. Не умеешь в английский, в Яндексе напиши: «как пользоваться командой find», уверен, найдётся минимум сотня подробных руководств.

Зачем тебе exec ls?

Ты не пытаешься осознать, что пишешь, а закидываешь в бутылку осколки команд, и трясешь в надежде, что из всего этого соберется корабль.

Тебе от find нужен только -print, который подразумевается по умолчанию.

Притом я тебе в прошлом твоем треде уже в последнем сообщении предложил ровно два способа решения.

emorozov
()
Последнее исправление: emorozov (всего исправлений: 1)
Ответ на: комментарий от krdgroup

find . ( -name «$folder» ); #выводит путь до папки

В родительском сообщении написана команда с правильными аргументами. Ты в своём сообщении приводишь команду с неправильными. Потому что тебе надо не просто писать абстрактную тарабарщину, начинающуюся с find, а прочитать первый абзац документации по find, чтобы понять, что у нее означает первый аргумент. Ну и дальше прочитать, чтобы узнать, что делает параметр -name.

Сразу всё станет на свои места.

В прошлом треде я написал два правильных варианта как сделать через find и через ls.

Но ты зачем-то продолжаешь упарываться, комбинируя параметры, смысл которых не понимаешь и не хочешь читать доку.

emorozov
()
Последнее исправление: emorozov (всего исправлений: 2)
Ответ на: комментарий от emorozov

читал я документацию, там такого не написано. Проблема в том что в find не передается путь через переменную:

$folder - название папки (2211,2210 итп..)

find ./AXE/TELLIN/2211 -type f -name «*.z» - так работает

p= find ./ -type d -name «$folder» find $p -type f -name «*.z» - а так нет

krdgroup
() автор топика
Ответ на: комментарий от krdgroup

Проблема в том что в find не передается путь через переменную

Передается. Пруф:

user@home:/tmp$ tree AXE/
AXE/
└── TELLIN
    ├── 2210
    │   └── abc.z
    └── 2211
        ├── bar.z
        ├── foo.x
        ├── foo.y
        └── foo.z

3 directories, 5 files
user@home:/tmp$ ./run.sh 2210
/tmp/AXE/TELLIN/2210/abc.z
user@home:/tmp$ ./run.sh 2211
/tmp/AXE/TELLIN/2211/bar.z
/tmp/AXE/TELLIN/2211/foo.z
ymn ★★★★★
()
Ответ на: комментарий от krdgroup

читал я документацию, там такого не написано. Проблема в том что в find не передается путь через переменную

Документацию по markdown тоже прочитай, чтобы правильно код форматировать. И внимательнее, чем по find.

А то в последнем абзаце такая каша, что фиг поймешь, что написано.

Заодно прочитай документацию по shell и/или bash, потому что вот это:

p= find ....

из последнего абзаца, не имеет абсолютно никакого смысла в shell.

Если тебе нужны все файлы с расширением .z, то что мешает написать:

find . -name '*.z'

Эта команда выведет все файлы с расширением .z вместе с полным путем от текущего каталога.

emorozov
()
Последнее исправление: emorozov (всего исправлений: 1)