如何批量合并文件?
- 百草谷居士
- 帖子: 4025
- 注册时间: 2006-02-10 16:36
- 系统: debian12/xubuntu2404
如何批量合并文件?
有cd01.dat cd02.dat ......cd60.dat共60个文件,我想使用cat命令将他们每3个合并为一个文件。如:
cat cd01.dat cd02.dat cd03.dat >part01.dat
cat cd04.dat cd05.dat cd06.dat >part02.dat
如何使用脚本自动完成上述任务?
cat cd01.dat cd02.dat cd03.dat >part01.dat
cat cd04.dat cd05.dat cd06.dat >part02.dat
如何使用脚本自动完成上述任务?
Mint 22 / Xubuntu 24.04
为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
-
- 帖子: 13
- 注册时间: 2007-01-28 13:52
Re: 如何批量合并文件?
纯粹为了解决你提的问题,没啥灵活性。。。
代码: 全选
#!/usr/bin/perl -w
use strict;
my $i=1;
my $j=1;
my ($cd,$part);
while ($i < 61){
($i<10)?($cd="cd0$i.bat"):($cd="cd$i.bat");
($j<10)?($part="part0$j.bat"):($part="part$j.bat");
system ("cat $cd >> $part");
if ($i%3 == 0){
$j++;
}
$i++;
}
- cnkilior
- 论坛版主
- 帖子: 4984
- 注册时间: 2007-08-05 17:40
Re: 如何批量合并文件?
楼主真懒!一个循环了事的,还要求人?
- goodluck1982
- 帖子: 171
- 注册时间: 2007-07-05 2:48
Re: 如何批量合并文件?
对于不具有一般性的一次性问题
如果不是太多的话
我宁愿用vim编辑一个脚本
复制粘贴成好多行
再具体修改每一行
然后再执行这个脚本
用熟了vi的话,这个很快的!
如果不是太多的话
我宁愿用vim编辑一个脚本
复制粘贴成好多行
再具体修改每一行
然后再执行这个脚本
用熟了vi的话,这个很快的!

- 百草谷居士
- 帖子: 4025
- 注册时间: 2006-02-10 16:36
- 系统: debian12/xubuntu2404
Re: 如何批量合并文件?
我不会bash的,没有办法。另外如何把1变成01,2变成02也让我不知道如何操作。cnkilior 写了:楼主真懒!一个循环了事的,还要求人?
Mint 22 / Xubuntu 24.04
为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
- 百草谷居士
- 帖子: 4025
- 注册时间: 2006-02-10 16:36
- 系统: debian12/xubuntu2404
Re: 如何批量合并文件?
自己仔细研究了一下,原来可以这样处理:
我这个老会计一点也不懒

代码: 全选
for ((i=0;i<20;i++))
do
joiner=""
for ((j=1;j<4;j++))
do
let k=i*3+j
if (( $k<10))
then
fname=cd0$k.dat
else
fname=cd$k.dat
fi
joiner=$joiner' '$fname
done
#echo $joiner
let o=i+1
if (($o<10))
then
oname=part0$o.dat
else
oname=part$o.dat
fi
cat $joiner > $oname
done


Mint 22 / Xubuntu 24.04
为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
- roylez
- 帖子: 1928
- 注册时间: 2005-10-04 10:59
- 来自: 上海
Re: 如何批量合并文件?
咋都整得那么复杂呢?
输出
代码: 全选
for i in `seq 1 20`; do echo "cat $(seq -s ' ' -f 'cd%02g.dat' $((3*i-2)) $((3*i))) >part$(printf %02g $i).dat";done
代码: 全选
cat cd01.dat cd02.dat cd03.dat >part01.dat
cat cd04.dat cd05.dat cd06.dat >part02.dat
cat cd07.dat cd08.dat cd09.dat >part03.dat
cat cd10.dat cd11.dat cd12.dat >part04.dat
cat cd13.dat cd14.dat cd15.dat >part05.dat
cat cd16.dat cd17.dat cd18.dat >part06.dat
cat cd19.dat cd20.dat cd21.dat >part07.dat
cat cd22.dat cd23.dat cd24.dat >part08.dat
cat cd25.dat cd26.dat cd27.dat >part09.dat
cat cd28.dat cd29.dat cd30.dat >part10.dat
cat cd31.dat cd32.dat cd33.dat >part11.dat
cat cd34.dat cd35.dat cd36.dat >part12.dat
cat cd37.dat cd38.dat cd39.dat >part13.dat
cat cd40.dat cd41.dat cd42.dat >part14.dat
cat cd43.dat cd44.dat cd45.dat >part15.dat
cat cd46.dat cd47.dat cd48.dat >part16.dat
cat cd49.dat cd50.dat cd51.dat >part17.dat
cat cd52.dat cd53.dat cd54.dat >part18.dat
cat cd55.dat cd56.dat cd57.dat >part19.dat
cat cd58.dat cd59.dat cd60.dat >part20.dat
✡ 弄个dropbox空间来备份文件或者做私人代码服务器?
✡ 配置:[url]git://github.com/roylez/dotfiles.git[/url]
✡ 主页:http://roylez.heroku.com
✡ 各种稀奇玩意儿:http://dooloo.info
✡ 配置:[url]git://github.com/roylez/dotfiles.git[/url]
✡ 主页:http://roylez.heroku.com
✡ 各种稀奇玩意儿:http://dooloo.info
- 百草谷居士
- 帖子: 4025
- 注册时间: 2006-02-10 16:36
- 系统: debian12/xubuntu2404
Re: 如何批量合并文件?

printf %02g $i 。我从man printf的介绍里面并没有看到使用 %02g这样到格式化方法,是不是哪里有更详细到介绍?
Mint 22 / Xubuntu 24.04
为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
- roylez
- 帖子: 1928
- 注册时间: 2005-10-04 10:59
- 来自: 上海
Re: 如何批量合并文件?
我不是高人。shell script我就知道那么一点点,用python多些。
man printf确实看不到%02g的介绍,但是你看到最后,有see also printf(3),然后你
man 3 printf
就能看到更多内容。%02g其实是标准的C语言格式化输出。
seq就更简单了,就是用来产生一个序列的。man一下就清楚了。
seq 20 =>输出1-20的数字
seq -f "test%g" 5 10 =>输出test05, test06, ...., test10
man printf确实看不到%02g的介绍,但是你看到最后,有see also printf(3),然后你
man 3 printf
就能看到更多内容。%02g其实是标准的C语言格式化输出。
seq就更简单了,就是用来产生一个序列的。man一下就清楚了。
seq 20 =>输出1-20的数字
seq -f "test%g" 5 10 =>输出test05, test06, ...., test10
✡ 弄个dropbox空间来备份文件或者做私人代码服务器?
✡ 配置:[url]git://github.com/roylez/dotfiles.git[/url]
✡ 主页:http://roylez.heroku.com
✡ 各种稀奇玩意儿:http://dooloo.info
✡ 配置:[url]git://github.com/roylez/dotfiles.git[/url]
✡ 主页:http://roylez.heroku.com
✡ 各种稀奇玩意儿:http://dooloo.info
- 百草谷居士
- 帖子: 4025
- 注册时间: 2006-02-10 16:36
- 系统: debian12/xubuntu2404
Re: 如何批量合并文件?
俺的see alse里面没有让俺man 3 printf的。俺man 3 printf了没有结果。看来咱两的man不是同一个man。
Mint 22 / Xubuntu 24.04
为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。