2011-01-28 5 views
9

여러 * .js 파일이있는 디렉토리가 있습니다. 수량 및 파일 이름을 알 수 없습니다. 이런 식으로 뭔가 : 나는 하나 merged_dmYHis.js에이 디렉토리에있는 모든 파일을 병합 할 필요가디렉토리의 모든 파일을 bash를 사용하여 하나로 병합하십시오.

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

. 파일의 내용은 예를 들어, :

1.js

aaa 
bbb 

2.js

ccc 
ddd 
eee 

blabla.js

fff 

merged_280120111257.js이 포함됩니다 :

aaa 
bbb 
ccc 
ddd 
eee 
fff 

이 떠들썩한 파티를 사용하여 할 수있는 방법이 있나요, 또는 작업이 파이썬 또는 이와 유사한 같은 높은 수준의 프로그래밍 언어를 필요로?

답변

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

일반적인 솔루션은 다음과 같습니다

그냥 관심 밖으로
cat *.js > merged_`date +%d%m%Y%H%M`.js 

이 - 당신이 DDMMYYYYHHMM와 파일 이름을 지정하는 것이 좋습니다 생각하십니까? 파일을 연대순으로 정렬하기가 어려울 수 있습니다 (셸 내에서). YYYYMMDDHHMM 패턴은 어떻습니까? ,

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

대단히 감사합니다. 나는 대답이 그렇게 단순하지 않다고 생각했습니다. 'cat' 파일을 어떤 순서로 병합합니까? –

+0

@ SilvertLight - 당신이 준 순서대로. '* .js' ('ls * .js'에서)는 알파벳순으로 그들을 반환하므로'cat * .js'와 연결됩니다. – eumiro

-1

당신은뿐만 아니라 들어오는 파일을 정렬 할 수있는 기본은 알파벳 순서이지만,이 예는 파일의 수정 시간 소인에 의해 최신에 오래된에서 진행됩니다 고양이 걸리는이 예에서는

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

ls 명령의 파일 목록 및 -t는 timestamp로 정렬하고 -r은 기본 순서를 바꿉니다.

관련 문제