正则表达式 – BASH:Raplace文件名不在列表中的字符

我想创建一个列表:

0123456789abcdefghijklmnopqrstuvxwyzABCDEFGHIJKLMnopQRSTUVXWYZ-._

然后迭代文件夹中的所有文件,用下划线_替换此列表中不存在的文件名中的每个字符.

包括空格.

但仅使用Bash和GNU工具.

那可能吗?

解决方法

仅限Bash内部:

for file in *; do
    repl=${file//[!$permitted]/_}
    case $file in "$repl") continue;; esac  # skip if identical
    # Safety: add a suffix to avoid overwriting
    while [ -e "$repl" ]; do
        repl=${repl}_
    done
    mv "$file" "$repl"
done

如果$allowed包含斜杠,则需要反斜杠 – 转义它.

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...