2011-01-28 17 views
9

Birkaç * .js dosyası bulunan bir dizinim var. Miktar ve dosya adları bilinmiyor. Böyle bir şey: Ben bir merged_dmYHis.js içine bu dizindeki tüm dosyaları birleştirmek gerekirBir dizindeki tüm dosyaları bir baslık kullanarak bir araya getirin

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

. dosyalar içerikleri Örneğin, eğer:

1.js

aaa 
bbb 

2.js

ccc 
ddd 
eee 

blabla.js

fff 

merged_280120111257.js içerecektir:

aaa 
bbb 
ccc 
ddd 
eee 
fff 

bash kullanarak bunu yapmanın bir yolu var mı veya bu görev piton veya benzeri gibi yüksek düzeyli bir programlama dili gerektirir?

cevap

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

genel bir çözüm olacaktır:

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

- Eğer DDMMYYYYHHMM ile dosya adını iyi bir fikir olduğunu düşünüyorsunuz? Dosyaları kronolojik olarak (kabuk içinde) sıralamak zor olabilir. YYYYMMDDHHMM desen hakkında nasıl? ,

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

Çok teşekkür ederim, cevabın çok basit olduğunu düşünmedim. Hangi sırayla "kedi" dosyaları birleştirir? –

+0

@SilverLight - aynı sırada onlara verirsiniz. '' .js' ('ls * .js''de) onları alfabetik sırayla döndürdüğü için,' cat * .js' ile birleştirilmiş olurlar. – eumiro

-1

Sen de gelen dosyaları sıralayabilirsiniz varsayılan alfabetik sıra, ama bu örnek dosya modifikasyonu zaman damgası ile eskiden yeniye doğru geçer: kedi alır Bu örnekte

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

ls komutundan dosya listesi ve -t zaman damgasına göre sıralar ve -r varsayılan sırayı tersine çevirir.

İlgili konular