ex57.sh

来自「BASH Shell 编程 经典教程 《高级SHELL脚本编程》中文版」· Shell 代码 · 共 28 行

SH
28
字号
#!/bin/bash# badname.sh# 删除当前目录下文件名中包含一些特殊字符的文件.(这些特殊字符指的是不应该出现在文件名中的字符)for filename in *do  badname=`echo "$filename" | sed -n /[\+\{\;\"\\\=\?~\(\)\<\>\&\*\|\$]/p`# badname=`echo "$filename" | sed -n '/[+{;"\=?~()&lt;&gt;&*|$]/p'`  这句也行.# 删除文件名包含这些字符的文件:     + { ; " \ = ? ~ ( ) < > & * | $#  rm $badname 2>/dev/null#             ^^^^^^^^^^^ 错误消息将被抛弃.done# 现在, 处理文件名中以任何方式包含空白的文件.find . -name "* *" -exec rm -f {} \;# "find"命令匹配到的目录名将替换到"{}"的位置.# '\'是为了保证';'被正确的转义, 并且放到命令的结尾.exit 0#---------------------------------------------------------------------# 这行下边的命令将不会运行, 因为有 "exit" 命令.# 下边这句可以用来替换上边的脚本: find . -name '*[+{;"\\=?~()&lt;&gt;&*|$ ]*' -exec rm -f '{}' \;# (感谢, S.C.)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?