命令行里操作有空格的文件多少有点不方便,最近也在学脚本,就根据一个重命令空白字符为下划线的脚本,梳理下。
#!/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可以直接支持正则表达式,不过测试下来并非如此。
[[email protected] a C]$ echo * a like [[email protected] a C]$ * -bash: ./a: Permission denied [[email protected] a C]$ ‘[0-9]$‘ bash: [0-9]$: command not found...
时间: 2024-08-24 03:07:54