сценарий bash для просмотра папок и файлов

У меня есть папки с именами ouput00035023031 для output000035023035. Я написал сценарий bash для перебора каждой папки и входа в нее. После входа в папку я хочу запустить программу barycorr. Что требует трех входов. Входными данными являются имена файлов * cl.evt . Код показан ниже:

for i in $(seq -f "%03g" 1 5); do
    cd output0003502303$i
    echo -e "sw00092413002xpcw3po_cl.evt 
    sw00092413002xpcw3po_cl_bary4.evt 
    sw00092413002sao.fits.gz" | barycorr ra=253.467570 dec=39.760169
    cd ..
done

Мне нужно сначала ввести имена файлов sw * pcw3po_cl.evt , во-вторых, имя файла, которое я хочу сохранить, например sw * xpcw3po_cl_bary4.evt , а в-третьих, путь, по которому находится файл sw * sao.fits.gz . * меняется в зависимости от того, в какой папке я нахожусь. Как теперь написать сценарий для запуска этой программы внутри каждой папки.

0
задан 18 June 2021 в 15:02

1 ответ

Если я правильно понимаю, вы должны быть в состоянии сделать что-то вроде этого:

for i in $(seq -f "%03g" 1 5); do
    printf '%s\n' "output0003502303${i}/sw00092413${i}"{xpcw3po_cl.evt,xpcw3po_cl_bary4.evt,sao.fits.gz} |
        barycorr ra=253.467570 dec=39.760169
done

Пояснение: printf '%s\n' выведет каждый из следующих аргументов (часть %s), за которыми следуют новые строки (часть \n) -- то есть, каждый на отдельной строке. printf гораздо более управляем для таких вещей, чем echo.

Что касается этих аргументов, каждый из них состоит из имени папки и префиксов имен файлов, а затем {xpcw3po_cl.evt,xpcw3po_cl_bary4.evt,sao.fits.gz} часть расширяется до каждого из этих суффиксов. По сути, это сокращение для:

"output0003502303${i}/sw00092413${i}"xpcw3po_cl.evt
"output0003502303${i}/sw00092413${i}"xpcw3po_cl_bary4.evt
"output0003502303${i}/sw00092413${i}"sao.fits.gz

Это то, что нужно? Если нет, пожалуйста, уточните.

0
ответ дан 28 July 2021 в 11:27

Другие вопросы по тегам:

Похожие вопросы: