求助关于批量改文件的扩展名
-
- 帖子: 51
- 注册时间: 2006-10-05 17:27
求助关于批量改文件的扩展名
出于某种诡异的原因我的下载机(MSS)会把任何大于2G的文件自动分割成不大于2G一个的文件
假设有个7G的a.mkv,我最终获得的是a.mkv000,a.mkv001,a.mkv002,a.mkv003这样4个文件
现在我已知有个叫HJSplit的软件 可以把这类文件合并起来,前提是他们是这样的文件名结构
a.mkv.001,a.mkv.002,a.mkv.003,a.mkv.004
这样合并后会自动生成一个a.mkv文件
请问用什么脚本可以实现这样的操作呢?如果文件数量太多,手动改名实在是太让人崩溃了。。。
假设有个7G的a.mkv,我最终获得的是a.mkv000,a.mkv001,a.mkv002,a.mkv003这样4个文件
现在我已知有个叫HJSplit的软件 可以把这类文件合并起来,前提是他们是这样的文件名结构
a.mkv.001,a.mkv.002,a.mkv.003,a.mkv.004
这样合并后会自动生成一个a.mkv文件
请问用什么脚本可以实现这样的操作呢?如果文件数量太多,手动改名实在是太让人崩溃了。。。
-
- 帖子: 61
- 注册时间: 2010-04-29 22:00
- 系统: Gentoo Linux ~amd64
- 联系:
Re: 求助关于批量改文件的扩展名
- ubuntu1023
- 帖子: 1791
- 注册时间: 2010-06-04 1:06
Re: 求助关于批量改文件的扩展名
分割成的文件1个2G,不会太多,高清也就5、6个,手动修改扩展名即可
-
- 帖子: 51
- 注册时间: 2006-10-05 17:27
-
- 帖子: 51
- 注册时间: 2006-10-05 17:27
Re: 求助关于批量改文件的扩展名
以前是手动改的,但是片子多了太痛苦了ubuntu1023 写了:分割成的文件1个2G,不会太多,高清也就5、6个,手动修改扩展名即可
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: 求助关于批量改文件的扩展名
设文件在b文件夹,a.mkv000 改成 a.mkv_001 ,要加_不然就把另外的文件覆盖了,数字不必要连续,全部加一:
kose5@kose5-Aspire-4552:~$ cd b;ls -1|while read n;do a=($(sed 's#\(.*\)\([0-9]\{3\}\)$#\1 \2#' <<<$n ));mv $n ${a[0]}"_"$(printf "%03d" $((${a[1]/#?(0|00)}+1)));done;cd
kose5@kose5-Aspire-4552:~$ cd b;ls -1|while read n;do a=($(sed 's#\(.*\)\([0-9]\{3\}\)$#\1 \2#' <<<$n ));mv $n ${a[0]}"_"$(printf "%03d" $((${a[1]/#?(0|00)}+1)));done;cd
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
- 帖子: 51
- 注册时间: 2006-10-05 17:27
Re: 求助关于批量改文件的扩展名
fnan 写了:设文件在b文件夹,a.mkv000 改成 a.mkv_001 ,要加_不然就把另外的文件覆盖了,数字不必要连续,全部加一:
kose5@kose5-Aspire-4552:~$ cd b;ls -1|while read n;do a=($(sed 's#\(.*\)\([0-9]\{3\}\)$#\1 \2#' <<<$n ));mv $n ${a[0]}"_"$(printf "%03d" $((${a[1]/#?(0|00)}+1)));done;cd
代码: 全选
ls -1|while read n;do a=($(sed 's#\(.*\)\([0-9]\{3\}\)$#\1 \2#' <<<$n ));mv $n ${a[0]}"."$(printf "%03d" $((${a[1]/#?(0|00)}+1)));done
在我的实际应用中把_替换成.了
想问下如果文件名不是a,应该改哪些地方?
- ChenFengyuan
- 帖子: 770
- 注册时间: 2008-03-23 0:39
Re: 求助关于批量改文件的扩展名
你直接把ee给出的忽略了呀。。。。。。anguste 写了:fnan 写了:设文件在b文件夹,a.mkv000 改成 a.mkv_001 ,要加_不然就把另外的文件覆盖了,数字不必要连续,全部加一:
kose5@kose5-Aspire-4552:~$ cd b;ls -1|while read n;do a=($(sed 's#\(.*\)\([0-9]\{3\}\)$#\1 \2#' <<<$n ));mv $n ${a[0]}"_"$(printf "%03d" $((${a[1]/#?(0|00)}+1)));done;cd此法可行,感激涕零!!!代码: 全选
ls -1|while read n;do a=($(sed 's#\(.*\)\([0-9]\{3\}\)$#\1 \2#' <<<$n ));mv $n ${a[0]}"."$(printf "%03d" $((${a[1]/#?(0|00)}+1)));done
在我的实际应用中把_替换成.了
想问下如果文件名不是a,应该改哪些地方?
重命名,最nb的就是rename(perl版本的),没有之一.
debian里貌似装了perl就有带,
这么长的一段代码.......
- ChenFengyuan
- 帖子: 770
- 注册时间: 2008-03-23 0:39
Re: 求助关于批量改文件的扩展名
此处.无需转义eexpress 写了:你目的不就是分割合并嘛。
是已经下载的文件,就是那种后缀名?如果是这情况,你可以看下
rename 's/mkv/mkv\./' a.*
- ChenFengyuan
- 帖子: 770
- 注册时间: 2008-03-23 0:39
- ChenFengyuan
- 帖子: 770
- 注册时间: 2008-03-23 0:39
Re: 求助关于批量改文件的扩展名
非得用shell的话
for a in *;do mv -v $a $(echo $a|sed -e 's/mkv/mkv./');done
dash都支持,估计没问题了.
for a in *;do mv -v $a $(echo $a|sed -e 's/mkv/mkv./');done
dash都支持,估计没问题了.
- lainme
- 论坛版主
- 帖子: 7805
- 注册时间: 2008-09-13 19:17
- 系统: Arch Linux (x86_64)
- 联系:
Re: 求助关于批量改文件的扩展名
确实,你的目的就是合并。改名是为了用那个专门的软件来做合并这件事。
但其实你不该名,用cat就合并了,何必多做一步
想这样的结构:a.mkv000,a.mkv001,a.mkv002,a.mkv003
直接
cat a.mkv* > a.mkv
就可以了
但其实你不该名,用cat就合并了,何必多做一步
想这样的结构:a.mkv000,a.mkv001,a.mkv002,a.mkv003
直接
cat a.mkv* > a.mkv
就可以了
- ChenFengyuan
- 帖子: 770
- 注册时间: 2008-03-23 0:39
Re: 求助关于批量改文件的扩展名
或者如果你用zsh或bash,
应该可以
for i in *;do mv -v $i ${i/mkv/mkv./};done
应该可以
for i in *;do mv -v $i ${i/mkv/mkv./};done
- ChenFengyuan
- 帖子: 770
- 注册时间: 2008-03-23 0:39
Re: 求助关于批量改文件的扩展名
lainme 写了:确实,你的目的就是合并。改名是为了用那个专门的软件来做合并这件事。
但其实你不该名,用cat就合并了,何必多做一步
想这样的结构:a.mkv000,a.mkv001,a.mkv002,a.mkv003
直接
cat a.mkv* > a.mkv
就可以了
