如何将多个txt中的数据按照顺序复制到单个txt文件中

如何将多个txt中的数据按照顺序复制到单个txt文件中

我使用了代码 cat *.txt >> output.txt 。这段代码正在做的是它的工作,但是这里unix正在决定将文件复制到我的输出文件的顺序,这是不可取的,因为我希望根据文件的出现或生成时间来复制文件。我还使用了以下命令,以便我可以控制复制格式

for tablename in 'cat ${current_path}/table.txt(have defined the order)

do 

for data in 'cat path/$tablename.txt

do 
echo "$data" >> final/output.txt

done

done 

这里它正在做它的工作,但生成单个 txt 的多个副本,因为 for 循环正在工作。

答案1

假设我明白了这个问题

   xargs < "${current_path}/table.txt" cat > final/output.txt

是你所需要的全部。xargs将读取“table.txt”文件并按cat指定顺序运行这些文件,因此将它们输出到标准输出,然后将标准输出重定向到所需的位置。请注意,即使有很多文件xargs执行cat多次,此方法也有效,因为在执行任何文件cat(甚至)之前,重定向仅执行一次。xargs

如果你想按时间排序,那么

   ls -t | xargs cat > final/output

如果没有尴尬的文件名(例如嵌入空格或换行符),它将起作用。

答案2

for tablename in $(cat ${current_path}/table.txt);do
  for word in $(cat path/${tablename}.txt);do
    echo ${word}
  done
done > final/output.txt

这应该有效。我不确定你的意思

这里它正在做它的工作,但是生成单个 txt 的多个副本,因为 for 循环正在工作

你可以说得更详细点吗 ?


- 编辑 - 按照以下建议。

相关内容