如何按排序顺序连接文件?

时间:2015-12-08 01:01:19

标签: bash

我有一个文件目录,我想合并它们。唯一的问题是我希望通过调用" ls -l"来完全按照它们出现的顺序合并它们。

2 个答案:

答案 0 :(得分:5)

外壳已经开箱即用。因此,对于:

# works only if the number of names is short enough to fit in one invocation
cat * >../output.txt

...或者,它的堂兄支持更多的名称,而不是适合单个命令行......

# works for any arbitrary number of names
printf '%s\0' * | xargs -0 cat >../output.txt

...输出已根据LC_COLLATE中定义的归类顺序排序(ls在它可能执行的任何排序中也应该遵守的变量。)

答案 1 :(得分:1)

cat `ls` > ../output.txt

output.txt必须位于不同的目录中,否则cat将失败。

示例运行:

[myria@machine dir]$ echo Kitty > Kitty.txt
[myria@machine dir]$ echo Meow > Meow.txt
[myria@machine dir]$ echo Cat > Cat.txt
[myria@machine dir]$ echo Purr > Purr.txt
[myria@machine dir]$ cat `ls` > ../output.txt
[myria@machine dir]$ cat ../output.txt
Cat
Kitty
Meow
Purr

如果文件数量很大,则可能会失败。对于深奥的案例有更好的解决方案,如评论中所述。