linux文件名特殊字符,linux – 如何删除文件名中的特殊字符?

如果你向它添加g修饰符,你的重命名将起作用,这将执行所有替换而不是仅执行第一个替换:

$echo "$file"

foo bar,spam.egg

$rename -n 's/[^a-zA-Z0-9_-]//' "$file"

foo bar,spam.egg renamed as foobar,spam.egg

$rename -n 's/[^a-zA-Z0-9_-]//g' "$file"

foo bar,spam.egg renamed as foobarspamegg

您可以通过参数扩展单独使用bash:

>为了从文件名中删除除a-zA-Z0-9_-之外的所有内容,假设变量文件包含文件名,使用字符类[:alnum:]匹配当前语言环境中的所有字母字符和数字:

"${file//[^[:alnum:]_-]/}"

或明确地,将LC_COLLATE更改为C:

"${file//[^a-zA-Z0-9_-]/}"

例:

$file='foo bar,spam.egg'

$echo "${file//[^[:alnum:]_-]/}"

foobarspamegg

你可能感兴趣的:(linux文件名特殊字符)