我下载了很多文件,其中一些包含无效字符,编码为类似于%2C
...%2F
我试过了rename 's/%[0-9][A-Z]/_/g *
,rename 's/\%[0-9][A-Z]/_/g *
但他们什么也没做。(抱歉,我的错。rename
有效。我输入了一些拼写错误或与全角/半角字符相关的内容... ONZ..........请投票关闭此问题)
例如,文件名file,1.pdf
, file/2.pdf
... 编码为file%2C1.pdf
, file%2F2.pdf
。我想将它们重命名为file_1.pdf
, file_2.pdf
,...
答案1
您可以使用:
rename 's/%/_/g' *
首先使用-n
选项(试运行)运行它以确保一切正常:
rename -n 's/%/_/g' *
要捕获数字:
rename -n 's/%[0-9]/_/g' *
甚至使用类似的方法来删除除字母数字之外的所有字符:
$ rename -n 's/[^a-zA-z0-9]/_/g' *
rename(%SOME%2FFOR%, _SOME_2FFOR_)
rename(SOME%2FFOR, SOME_2FFOR)
rename(SOME%2FFOR%, SOME_2FFOR_)
答案2
使用以下脚本,复制脚本并将其保存为/bin
,renamer.sh
然后任何时候您想对此类文件进行任何重命名,请使用简单命令renamer.sh #Input files#
;
#!/bin/bash
for input in $@;
do
inputMod=$( echo "$input" | sed 's/\(%\)/\_/pg' );
mv "$input" "$inputMod" &> /dev/null;
shift;
done;