创建与文件名相关的文本文件

创建与文件名相关的文本文件

我有一个文本文件 (digit.txt),其中一列包含三位数字,范围是 001-...365。在同一目录中,我有数据文本文件。这些数据文件的文件名如下,jplg3240.18i。只有jplg部分是不变的。我需要jplg使用文件名的前 5-7 个字符对 digit.txt 文件中的数字进行数据文件排序,并将其存储在另一个文本文件中。例如:

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

答案1

这里的 while 循环可能有助于实现你的目标:

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

代码应该在文件所在的路径中运行,并根据结果为您提供文件 datafiles.txt 中的文件列表,其中包含文件的完整名称(如果与文件 digit.txt 中的列表匹配)

答案2

如果您的问题是连接 digit.txt 中列出的文件中的数据,那么答案是:

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

慢动作:

  • ls jplg*:列出您想要的所有文件的超集(如果需要,您可以使其更具限制性)
  • grep -f digit.txt仅保留包含一个数字的行digit.txt(假设这三个数字不会出现在文件名的其他任何地方)
  • xargs cat:适用cat于 grep 输出中列出的所有文件

相关内容