我有一个文件目录,我想合并它们。唯一的问题是我希望通过调用" ls -l
"来完全按照它们出现的顺序合并它们。
答案 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
如果文件数量很大,则可能会失败。对于深奥的案例有更好的解决方案,如评论中所述。