создание текстового файла относительно имен файлов

У меня есть текстовый файл (digit.txt), состоящий из одного столбца, включает трехзначные числа, диапазон которых 001-... 365. В том же каталоге у меня есть текстовые файлы данных. Имя файла этих файлов данных следующим образом, jplg3240.18i. Только jplg часть является постоянной. Я должен заказать jplg файлы данных w.r.t. числа в файле digit.txt с помощью первых 5-7 символов имен файлов и хранят их в другом текстовом файле. Например:

digit.txt=
005
301
350
005
010

data files= jplg001.18i.txt, jplg005.18i.txt, jplg301.18i.txt, jplg350.18i.txt,jplg010.18i.txt, jplg365.18i.txt

Выходной файл должен быть этим:

output=
jplg005.18i
jplg301.18i
jplg350.18i
jplg005.18i
jplg010.18i
0
задан 8 January 2019 в 00:59

2 ответа

здесь, в то время как цикл мог быть хорош для досягаемости Ваша цель:

while read element
do
    if [ -f jplg${element}* ]; then
        echo jplg${element}* >> datafiles.txt
    fi
done < digit.txt

Код, как предполагается, выполняется в к пути, были файлы, и дают Вам согласно результату список файлов в файле datafiles.txt с полным названием файла, если был подобран в списке в файле digit.txt

2
ответ дан 26 October 2019 в 14:35

Если Вы подвергаете сомнению, связывают данные из файлов, перечисленных в digit.txt затем, ответ:

ls jplg* | grep -f digit.txt | xargs cat >out.dat

В slo-mo:

  • ls jplg*: перечисляет надмножество всех файлов, которые Вы хотите (можно сделать это более строгим в случае необходимости),
  • grep -f digit.txt сохраняет только строки, которые содержат одно число в digit.txt (это предполагает, что эти три цифры не появляются больше нигде в именах файлов),
  • xargs cat: применяется cat во все файлы, перечисленные в grep, производится
0
ответ дан 26 October 2019 в 14:35

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

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