regex - 帮助 shell 脚本 - 重命名目录中的文件名(删除特殊字符)?

标签 regex linux bash

我有一个包含空格和各种字符的 csv 文件目录。我如何重命名它们?下面报错。

#! /bin/bash

cd DirectoryName

for file in *.csv; do
    #echo $file
    filename=${file%.*}
    file_clean=${filename//[ ()$+&\.\-\'\,]/_}
    final= "$file_clean.csv"
    mv "$file" $final
done

cd ..

谢谢!

更新:(这个有效)

#! /bin/bash

cd DirectoryName

for file in *.csv; do
    #echo $file
    filename=${file%.*}
    file_clean=${filename//[ ()$+&\.\-\'\,]/_}
    final= "$file_clean.csv"
    mv "$file" $final
done

cd ..

最佳答案

当然可以。您没有引用替换,并且您对 $final 的分配不正确。引用所有替换用法,并删除等号后的空格。

关于regex - 帮助 shell 脚本 - 重命名目录中的文件名(删除特殊字符)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3073433/

相关文章:

.net - RichTextbox - 行长度选择问题

c# - 不区分大小写的正则表达式

javascript - 如何从javascript中的字符串中找出电子邮件和姓名

ruby - 如何使用 Ruby 一次向前和向后移动一屏文本?

linux - 用于删除小于 x kb 的文件的 Shell 脚本

java -\n 位于字符串中的什么位置?

c - API和系统调用的区别

linux - 重定向输出附加(小数)点。为什么?

bash - awk 或其他命令如何获取字符串 curl 结果的变量值?

bash - 我怎样才能对带有前导零的数字变量进行 bash 算术运算?