zhaoke 发表于 2007-8-21 00:26:49

小技巧: 使用shell命令修改多个文件

小技巧: 使用shell命令修改多个文件

http://blog.zhaoke.com/141.html


注: 下面所有命令已在bash shell环境中测试

实例一: 修改当前目录所有的*.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
# * matches upper case names
for i in *
do
j=`echo $i | tr ‘’ ‘’`
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/’ *
页: [1]
查看完整版本: 小技巧: 使用shell命令修改多个文件