我在目录中有许多文件,文件名类似于file1,file2,file3,file4,file5,.....,file1000。它们具有相同的尺寸,每个都有5列和2000行。我想将它们以数字顺序并排粘贴到一个大文件中,因此最终的大文件应该有5000列和2000行。
我试过
for x in $(seq 1 1000); do
paste `echo -n "file$x "` > largefile
done
有没有一种方法可以按照数字顺序粘贴这些文件(file1,file2,file3,file4,file5,...,file10,file11,..., file1000)?
例如:
文件1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
...
file2的
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
....
文件3
3 3 3 3 3
3 3 3 3 3
3 3 3 3 3
....
粘贴file1 file2 file3 ....文件1000> largefile
largefile
1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
....
感谢。
答案 0 :(得分:12)
如果您当前的shell是bash:paste -d " " file{1..1000}
答案 1 :(得分:2)
您需要使用前导零重命名文件,例如
paste <(ls -1 file* | sort -te -k2.1n) <(seq -f "file%04g" 1000) | xargs -n2 echo mv
以上是“干跑” - 如果您满意,请删除echo
或者您可以使用例如perl的
ls file* | perl -nlE 'm/file(\d+)/; rename $_, sprintf("file%04d", $1);'
然后你可以
paste file*
答案 2 :(得分:2)
使用zsh
:
setopt extendedglob
paste -d ' ' file<->(n)
<x-y>
用于匹配x
到y
的正十进制整数。可以省略x
和/或y
,因此<->
是任何正十进制整数。它也可以写成[0-9]##
(##
是zsh
相当于正则表达式+
。)
(n)
是 globbing限定符。 n
globbing限定符打开数字排序,对文件名中出现的所有十进制数字序列进行排序。