使用shell命令修改多个文件和文件内容_Forever_百度空间

使用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
'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'

参考 https://www.360docs.net/doc/2c9120618.html,/141.html#more-141

类别:Linux | | 添加到搜藏 | 分享到i贴吧 | 浏览(206) | 评论 (0) 上一篇:kernel panic - not syncing
下一篇:批量更改文件内容的SHELL脚本 最近读者:
jiazhenxiu铮铮卡穆jugao12345babyvox5thlltlkHolyfanhzxy0830
网友评论: 发表评论:姓 名:zhscor *姓名最长为50字节

内 容:插入表情▼ 闪光字




验证码: 请点击后输入四位验证码,字母不区分大小写
看不清?
取消回复



©2010 Baidu $

相关文档
最新文档