我有一个包含多个* .js文件的目录。数量和文件名称未知。像这样:
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或类似的?
答案 0 :(得分:46)
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
答案 1 :(得分:-1)
您也可以对传入的文件进行排序,默认为按字母顺序排列,但此示例通过文件修改时间戳从最旧到最新进行:
cat `ls -tr *.js` > merged_`date +%Y%m%d%H%M`.js
在此示例中,cat从ls命令获取文件列表,-t按时间戳排序,-r反转默认顺序。