我想重命名文件夹子系统中的每个文件,其中包含要替换为下划线的斜杠
当前文件名示例:
Hello/there.txt
File/name.jpg
至
Hello_there.txt
File_name.jpg
这些文件位于同一文件夹系统的不同子文件夹中,并且斜线位于不同的位置。我尝试按如下方式使用重命名命令:
rename "s/\//_/g" *
但我无法获得任何成功。你能给我一个正确的方向吗?
我想重命名文件夹子系统中的每个文件,其中包含要替换为下划线的斜杠
当前文件名示例:
Hello/there.txt
File/name.jpg
至
Hello_there.txt
File_name.jpg
这些文件位于同一文件夹系统的不同子文件夹中,并且斜线位于不同的位置。我尝试按如下方式使用重命名命令:
rename "s/\//_/g" *
但我无法获得任何成功。你能给我一个正确的方向吗?
根据
ls
您评论中的输出,有问题的字符是Unicode 小数斜杠而不是普通的 ASCII 斜杠(这在 Unix 文件名中是非法的,因为它被用作路径分隔符)。在 UTF-8 语言环境中,
⁄
(U+2044、八进制\342\201\204
或十六进制)是一个普通字符,您可以使用基于 perl 的命令以0xE2 0x81 0x84
通常的方式操作/替换它。rename
前任。:或者
-n
一旦你很高兴它正在做正确的事情,就删除它。如果你想
find
递归地使用降级目录,你可以这样做(如果目录名称可以包含
\342\201\204
并且您也想替换它们,那么您将需要添加-depth
和删除-type f
限制)。