使用文件名升序的粘贴命令

时间:2014-06-16 18:10:44

标签: unix paste

我有一个包含文件的文件夹,

LS

atom0
atom10
atom11
atom12
.
.
atom19
atom1
atom20
atom21
atom2
....
.....

每个文件都有两列。我希望两个按名称文件的升序列列出所有文件,即

paste atom0 atom1 atom2 atom3 ...atom8 atom9 atom10 atom11 atom12.....atom20....> data

粘贴原子*>数据

给出数据,但顺序是ls命令的默认顺序。即

atom0 atom1 atom11 atom12 . .atom19 atom1 atom20 atom21 atom2 ....

如何将此顺序更改为粘贴命令的升序?

1 个答案:

答案 0 :(得分:1)

根据Jonathan Leffler的评论ls -v,如果支持则最简单。

如果您的ls支持-v选项。

ls -v atom* | xargs paste > data

如果没有,可以使用排序。

find . -name 'atom*' | sort -n -k1.7 | xargs paste > data

7来自./atomNNNN,所以跳过前6个字符。如果你有一个不同的前缀(而不是" atom"),请更新-k1.7以反映它。

没有排序

$ find . -name 'atom*'
./atom
./atom0
./atom1
./atom10
./atom11
./atom12
./atom3
./atom9

使用sort

$ find . -name 'atom*' | sort -n -k1.7
./atom0
./atom1
./atom3
./atom9
./atom10
./atom11
./atom12