如何对许多名称不是数字的文件使用粘贴命令? (将每个文件中的列粘贴到一个文件中)

如何对许多名称不是数字的文件使用粘贴命令? (将每个文件中的列粘贴到一个文件中)

要粘贴多个文件,其名称是增量数字:

paste {1..8}| column -s $'\t' -t
  • 如果您的文件不是按数字命名而是仅按单词命名怎么办?
  • 最多可以有十个文件,我该怎么办?

此外,您还有一个文件列表,其中包含您想要的所有文件。

到目前为止,我的方法是:

mkdir paste
j=0; while read i; do let j+=1; cp $i/ paste/$j; done<list;
cd paste; paste {1..8}| column -s $'\t' -t

我对这种方法没有问题,我只是想问是否有更短的方法。


实际上,我的文件具有相同的名称,只是位于不同的位置,例如1MUI/PQR/A/sum, 2QHK/PQR/A/sum, 2RKF/PQR/A/sum.命令paste应该是paste {list}/PQR/A/sum.列表文件为:

1MUI
2QHK
2RKF
...

答案1

bash4

mapfile -t <list
paste "${MAPFILE[@]}" | column -s $'\t' -t

对于paste {list}/PQR/A/sum问题的版本

mapfile -t <list
paste "${MAPFILE[@]/%//PQR/A/sum}" | column -s $'\t' -t    

答案2

如果您的所有文件都在单个目录中,则只需使用:

paste * | column -s $'\t' -t

如果您有一个包含所有文件的列表文件,并且每个文件名都在一行中,没有空格等特殊字符,您可以尝试:

paste $(printf "%s " $(cat list)) | column -s $'\t' -t

更新

根据您更新的信息,您可以尝试:

paste */PQR/A/sum | column -s $'\t' -t

如果您的父目录包含许多您不需要的文件和目录,则必须显式列出所有目录:

paste {1MUI,2QHK,2RKF,...}/PQR/A/sum | column -s $'\t' -t

相关内容