#!/bin/bash
DIRECTORY=`ls /var/www/html/erxue`
echo $DIRECTORY
dir=''
#直接使用ls /dir 的话,会将各个目录、文件以 空格 字符串拼接成一个字符串,for是通过空格来遍历数据的
#因此,需要在匹配的时候,做字符串处理,处理掉空格
#注意这里将空格替换的时候,如果文件(夹)名出现过你要替换之后的字符,这将会影响到替换
#例如: 原本是 a_b_c.txt 将_转换成 b => abbbc.txt 替换回来的时候 => a___c.txt
#补充: (tr ' ' 'K') 也可以用sed 's/ /K/g'
for dir in `ls -1 /var/www/html/erxue | tr ' ' 'K'`
do
echo '心累:'{$dir}
#K替换成空格
res=`echo $dir | tr 'K' ' ' `
echo $res
#重命名(也可以用rename)
mv "$res" "$dir"
done
如果你系统 rename 支持正则的话,以上都可以省略了,直接使用
rename 's/ /K/g' *
可以将当前文件夹内所有文件的名字中得所有空格替换为_。其中g代表所有,如果不加g,如果文件名字中有多个空格,仅替换第一个。