命令行里操作有空格的文件多少有点不方便,最近也在学脚本,就根据一个重命令空白字符为下划线的脚本,梳理下。

#!/bin/bash
# 重命名文件计数
handle_file=0
found_mark=0

for file_name in *; do
        # 通过grep的返回值来判断 
        echo "$file_name" | grep -q " "
        if [ $? -eq $found_mark ];then
                fileName=$file_name
                newName=`echo $fileName | sed -e 's/ /_/g'`
                mv "$fileName" $newName
                let "handle_file=$handle_file+1"
        fi
done
echo "$handle_file file renamed."
exit 0

这个脚本比较简单,通过grep判断有空白字符,就直接使用sed替换,mv重命名了。


grep 

 -q 静默,匹配到返回值为0.这个选项很适合用在脚本里。

对于for循环使用的*通配符匹配列表,现在还有点困惑,是怎么就直接匹配当前目录下了。

不过在命令行中直接使用 * 就已经表现匹配当前目录下的文件了。以为bash可以直接支持正则表达式,不过测试下来并非如此。

[LiuBai@VM.Fedora a C]$ echo *
a like 
[LiuBai@VM.Fedora a C]$ *
-bash: ./a: Permission denied
[LiuBai@VM.Fedora a C]$ '[0-9]$'
bash: [0-9]$: command not found...