我在 Debian 9 系统上有一个带有子文件夹的文件夹,其中有很多?
名称中带有某个字符的文件。我想重命名然后将其更改?
为_
.例如,A?oranza.txt
-> A_oranza.txt
。
我尝试了很多在这个网站上找到的命令,但没有成功。
答案1
答案2
您可以使用以下循环替换所有?
内容_
:
for i in *
do
echo "$i" | grep -q '?' && mv "$i" "${i//\?/_}"
done
我想我终于弄清楚并测试了它。我提取了所有带有控制字符和非 ASCII 字符的文件,并在第二个循环中将非 ASCII 字符替换为_
.
files=$(for i in *
do
echo "$i" | LANG="" sed -n '/[\x00-\x20]/p
/[\x80-\xFF]/p'
done)
for i in $files
do
mv "$i" "$(echo "$i" | LANG="" sed 's/[\x00-\x20]/_/g
s/[\x80-\xFF]/_/g')"
done
答案3
寻找通过 rsync 重新设置 Windows 计算机备份的正确方法,我找到了解决问题的新解决方案。就像@Kusalananda 和@HaukeLaging 在哪里说的?并不是真正的 ?,是一个不会被打印的特殊字符。我使用rsync
参数制作了文件夹的副本--iconv=iso-8859-1,utf8
,生成的文件夹的名称中包含正确的符号或特殊字符(例如 ñ 或 á)
detox
也做得很好,但rsync --iconv=iso-8859-1,utf8
现在我有了正确的文件名。感谢所有发布答案的人!