Mor*_*ton 2 linux bash rename special-characters ubuntu-10.04
有了rename它可以批量修改文件名。我设法+用这个命令摆脱了所有并用下划线替换它们:
rename 's/\+/_/g' *
Run Code Online (Sandbox Code Playgroud)
我可以将普通字母如 a 更改为 A with。
rename 's/a/A/g' *
Run Code Online (Sandbox Code Playgroud)
但我不能重命名?,不是这样/\?也不是这样/?。
有没有办法解决“?” 在文件名中?大多数 FTP 程序也无法重命名文件?。午夜指挥官失败。到目前为止,我发现有效的唯一方法是:
mv ?myfile.txt myfile.txt
Run Code Online (Sandbox Code Playgroud)
但是这个命令不够灵活。我更喜欢批量重命名?所有文件。
这个怎么样:
for filename in *
do
if [ "$filename" == *"?"* ]
then
mv "$filename" "$(echo $filename | tr '?' '-')"
fi
done
Run Code Online (Sandbox Code Playgroud)
或者作为一个班轮:
for filename in *; do mv "$filename" "$(echo $filename | tr '?' '-')" ; done
Run Code Online (Sandbox Code Playgroud)
但是,您的问题似乎不是文件名中有问号,而是文件名包含ls无法识别的字符。
虽然很丑陋,但它就是这样,一个使用 Python 的单行代码:
python -c 'import os, re; [os.rename(i, re.sub(r"\?", "-", i)) for i in os.listdir(".")]'
Run Code Online (Sandbox Code Playgroud)
至于清理文件名,也许这会对您有所帮助:
python -c 'import os, re; [os.rename(i, unicode(i, "utf-8", "ignore")) for i in os.listdir(".")]'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18814 次 |
| 最近记录: |