小技巧: 使用shell命令修改多个文件(转)
2008-06-04 13:17
597 查看
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
# [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/’ *
注: 下面所有命令已在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
# [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/’ *
相关文章推荐
- [Shell]使用find命令查找最近修改过的文件
- 使用终端shell命令批量修改一个文件下的所有文件的读写权限
- [Shell]使用find命令查找最近修改过的文件
- Linux中如何使用命令修改文件所属用户组?
- mktemp命令_Linux mktemp 命令用法详解:创建临时文件供shell脚本使用
- linux下终端常用命令和vi命令修改文件及保存的使用方法
- android makefile 文件中使用shell命令
- linux系统下修改文件命令vi的使用
- shell命令find删除修改后带尾巴的重复的文件
- shell基本命令使用--文件和目录操作
- Ubuntu下使用ls命令显示文件颜色相关内容及修改
- 使用shell命令sed将指定目录下的所有文件中指定的字符串替换成指定的字符串
- 【python中调用shell命令使用PIPE】使用PIPE作为stdout出现假卡死的情况——将stdout重定向为输出到临时文件
- 关于shell 命令在七牛的使用小技巧 使用七牛的curl 实现表单上传
- 如何使用vim命令修改或新建文件
- Matlab使用新发现1(小技巧:shell 命令、工程工作目录设置相关)
- 详细记录 mac 系统下使用 chmod 命令修改文件权限
- linux 中使用ls命令对文件进行排序-- 基于文件大小或者修改时间
- shell命令find删除修改后带尾巴的重复的文件
- 使用shell脚本恢复修改文件的时间戳