红联Linux门户
Linux帮助

linux、unix中的批量文件重命名

发布时间:2007-08-09 00:04:11来源:红联作者:oleuner
我要把gzip压缩后的文件的后缀.gz去掉:

方法一:
[root@test mysql]#touch test1 test2 test3
[root@test mysql]#gzip *
[root@test mysql]#ls
test1.gz test2.gz test3.gz
[root@test mysql]#ls -l *.gz|xargs rename .gz ""
[root@test mysql]# ls -l *.gz
ls: *.gz: 没有那个文件或目录
[root@test mysql]ls
test1 test2 test3
这个方法在HP-unix中会提示xargs的参数rename是无效的,怎么办呢,别急,请看下一个方法。

方法二:
[root@test mysql]#touch test1 test2 test3
[root@test mysql]#gzip *
[root@test mysql]#ls
test1.gz test2.gz test3.gz
[root@test mysql]#ls *.gz |awk '{oldname=$9;sub(/.gz$/,"");print oldname,$9 }'|xargs -n2 mv
[root@test mysql]#ls *.gz
ls: *.gz: 没有那个文件或目录
[root@test mysql]#ls
test1 test2 test3

注:这里传给xargs的参数-n2是关键,它指示xargs每次从标准输入中取出两个Field,传递给待执行的命令作为参数。否则它会一直从标准输入中取,一直取到命令行刚好不超过LINE_MAX为止。

ok,第二种方法解决了在hp-unix中的批量文件重命名问题。
文章评论

共有 0 条评论