У меня есть текстовый файл (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
здесь, в то время как цикл мог быть хорош для досягаемости Ваша цель:
while read element
do
if [ -f jplg${element}* ]; then
echo jplg${element}* >> datafiles.txt
fi
done < digit.txt
Код, как предполагается, выполняется в к пути, были файлы, и дают Вам согласно результату список файлов в файле datafiles.txt с полным названием файла, если был подобран в списке в файле digit.txt
Если Вы подвергаете сомнению, связывают данные из файлов, перечисленных в 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, производится