2011-01-28 39 views
9

我有一个包含多个* .js文件的目录。数量和文件名称未知。事情是这样的:将目录中的所有文件合并为一个使用bash

js/ 
|- 1.js 
|- 2.js 
|- blabla.js 

我需要此目录中的所有文件合并成一个merged_dmYHis.js。例如,如果文件内容是:

1.js

aaa 
bbb 

2.js

ccc 
ddd 
eee 

blabla.js

fff 

merged_280120111257.js将包含:

aaa 
bbb 
ccc 
ddd 
eee 
fff 

有没有办法使用bash做,或者这样的任务需要更高层次的编程语言,如Python或类似的?

回答

33
cat 1.js 2.js blabla.js > merged_280120111257.js 

一般的解决办法是:

cat *.js > merged_`date +%d%m%Y%H%M`.js 

只是出于兴趣 - 你认为这是一个好主意来命名与DDMMYYYYHHMM的文件?按时间顺序排序文件可能很困难(在shell中)。 YYYYMMDDHHMM模式如何?

cat *.js > merged_`date +%Y%m%d%H%M`.js 
+0

非常感谢,我不认为答案是如此简单。按照什么顺序`cat`合并文件? – 2011-01-28 12:14:44

-1

可以以及传入的文件进行排序,默认是按字母顺序排列,但这个例子从最早的经历到最新的文件修改时间:

cat `ls -tr *.js` > merged_`date +%Y%m%d%H%M`.js 

在这个例子中的猫需要ls命令中的文件列表,-t按时间戳排序,-r反转默认顺序。

相关问题