使用bash将目录中的所有文件合并到一个目录中
我有一个包含几个*.js文件的目录。数量和文件名未知。大概是这样的:使用bash将目录中的所有文件合并到一个目录中,bash,Bash,我有一个包含几个*.js文件的目录。数量和文件名未知。大概是这样的: js/ |- 1.js |- 2.js |- blabla.js 我需要将此目录中的所有文件合并为一个merged\u dmYHis.js。例如,如果文件内容为: 1.js aaa bbb ccc ddd eee fff 2.js aaa bbb ccc ddd eee fff blabla.js aaa bbb ccc ddd eee fff 合并的_280120111257.js将包含: aaa
js/
|- 1.js
|- 2.js
|- blabla.js
我需要将此目录中的所有文件合并为一个merged\u dmYHis.js
。例如,如果文件内容为:
1.js
aaa
bbb
ccc
ddd
eee
fff
2.js
aaa
bbb
ccc
ddd
eee
fff
blabla.js
aaa
bbb
ccc
ddd
eee
fff
合并的_280120111257.js
将包含:
aaa
bbb
ccc
ddd
eee
fff
有没有一种方法可以使用bash来完成,或者这样的任务需要更高级的编程语言,比如python或类似的语言
cat 1.js 2.js blabla.js > merged_280120111257.js
一般解决办法是:
cat *.js > merged_`date +%d%m%Y%H%M`.js
只是出于兴趣-你认为用ddmmyyyyhmm命名文件是个好主意吗?可能很难按时间顺序(在shell中)对文件进行排序。YYYYMMDDHHMM模式如何
cat *.js > merged_`date +%Y%m%d%H%M`.js
您也可以对传入的文件进行排序,默认为字母顺序,但本例通过文件修改时间戳从最早的文件到最新的文件:
cat `ls -tr *.js` > merged_`date +%Y%m%d%H%M`.js
在本例中,cat从ls命令获取文件列表,-t按时间戳排序,-r反转默认顺序。非常感谢,我不认为答案这么简单。合并文件的顺序是什么?@SilverLight-与您给定的顺序相同。由于
*.js
(在ls*.js
中)按字母顺序返回它们,因此它们将与cat*.js
连接。