使用shell命令修改多个文件和文件内容_Forever_百度空间zhscor  0 | 激活我的百度空间 | 我的消息(2/2) | 百度空间 | 百度首页
| 退出 Forever心中无敌,无敌于天下! 主页博客相册|个人档案 |好友  查看文章
使用shell命令修改多个文件和文件内容2009-04-04 19:16I.修改多个文件的文件名
实例一: 修改当前目录所有的*.php5为*.php文件.
方法一
$ for old in *.php5; do cp $old `basename $old .php5`.php; done
使用循环语句发现当前目录的所有*.php5文件, 然后一个接一个的修改为*.php文件, 直到结束.
比如当前目录存在两个*.php5文件:
$ ll
total 8
-rw-rw-r– 1 zhaoke zhaoke 3 Aug 20 07:58 islab.php5
-rw-rw-r– 1 zhaoke zhaoke 3 Aug 20 08:10 zhaoke.php5
首先到当前目录的islab.php5文件, 然后拷贝islab.php5, ‘basename islab.php5 .php5′ .php
basename将返回”islab”字符, 然后增加.php到islab后面, 最后你得到islab.php文件.
shell命令运行后的当前目录:
$ for old in *.php5; do cp $old `basename $old .php5`.php; done
$ ll
total 16
-rw-rw-r– 1 zhaoke zhaoke 3 Aug 20 08:39 islab.php
-rw-rw-r– 1 zhaoke zhaoke 3 Aug 20 07:58 islab.php5
-rw-rw-r– 1 zhaoke zhaoke 3 Aug 20 08:39 zhaoke.php
-rw-rw-r– 1 zhaoke zhaoke 3 Aug 20 08:10 zhaoke.php5
你也可以修改shell命令中的cp为mv:
$ for old in *.php5; do mv $old `basename $old .php5`.php; done
$ ll
total 8
-rw-rw-r– 1 zhaoke zhaoke 3 Aug 20 07:58 islab.php
-rw-rw-r– 1 zhaoke zhaoke 3 Aug 20 08:10 zhaoke.php
方法二
# rename .php5 .php *.php5
方法三
$ for x in *.php5; do n=${x/.php5/.php}; mv $x $n; done
方法四
$ for a in *php5 ; do mv $a ${a%%5} ; done
方法五
$for a in *.php5; do t=`echo $a | sed ’s/.php5$/.php/’`; mv $a $t; done
实例二: 把当前目录下所有文件及目录名中的大写字符改为小写符号
方法一:
1. 创建一个ucase脚本, 内容如下:
#!/bin/bash
# All names are converted to lower-case before matching
# [A-Z]* matches upper case names
for i in [A-Z]*
do
j=`echo $i | tr ‘[A-Z]’ ‘[a-z]’`
mv $i $j
done
2. 赋予ucase脚本可执行权限
$ chmod +x ucase
3. 列出当前目录下的所有文件及目录
$ ll
total 16
-rw-rw-r– 1 zhaoke zhaoke 3 Aug 20 08:42 Islab.php
-rwxrwxr-x 1 zhaoke zhaoke 187 Aug 20 08:54 ucase
drwxrwxr-x 2 zhaoke zhaoke 4096 Aug 20 08:54 ZhaoKe
-
rw-rw-r– 1 zhaoke zhaoke 3 Aug 20 07:58 zhaoke.php
4. 运行ucase脚本并查看结果
./ucase
mv: `ucase’ and `ucase’ are the same file
mv: `zhaoke.php’ and `zhaoke.php’ are the same file
$ ll
total 16
-rw-rw-r– 1 zhaoke zhaoke 3 Aug 20 08:42 islab.php
-rwxrwxr-x 1 zhaoke zhaoke 187 Aug 20 08:54 ucase
drwxrwxr-x 2 zhaoke zhaoke 4096 Aug 20 08:54 zhaoke
-rw-rw-r– 1 zhaoke zhaoke 3 Aug 20 07:58 zhaoke.php
方法二:
$ rename ‘y/A-Z/a-z/’ *
II.修改多个文件的文件内容
比如说我有100个文件,每个文件里面都有一行path, 这行path都是下面的格式:
/path ~/share/work/
我要将这100个文件里面的这行path都修改成:
/path ~/share/backup/
可以使用下面的命令:
$ for a in `grep -ri '/path ~/share/work/' . |awk -F\/ '{print $2}'| sed shell创建文件并写入内容
's/://g'` ;  \
$    do cat $a |sed 's/\/path ~\/share\/work\//\/path
~
\/share\/backup\//' > F$a ;mv F$a $a;  \
$ done;
另外一种方法:
$ ls | xargs sed -i 's/\/path ~\/share\/work\//\/path
~\/share\/backup\//g'
参考 blog.zhaoke/141.html#more-141
类别:Linux |  | 添加到搜藏 | 分享到i贴吧 | 浏览(206) | 评论 (0)  上一篇:kernel panic - not syncing 
下一篇:批量更改文件内容的SHELL脚本 最近读者:
jiazhenxiu铮铮卡穆jugao12345babyvox5thlltlkHolyfanhzxy0830
网友评论:    发表评论:姓 名:zhscor *姓名最长为50字节
内 容:插入表情▼ 闪光字
验证码:  请点击后输入四位验证码,字母不区分大小写
看不清?
取消回复
©2010 Baidu $

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。