我正在尝试将â
目录名称的重命名字符重命名为空白。例如,名为 的目录how-â8093-to
。
这是我使用的命令,包括一些其他修改
find . -type d | xargs rename 's/â//'
但仍然不起作用。
答案1
当使用find
对文件进行操作时,您应该始终尝试使用该-exec
函数,而不是xargs
尽可能使用该函数,因为它会回避参数引用的许多潜在问题。特别是在文件名带有奇怪字符的情况下,这一点非常重要。
尝试以下命令:
find . -type d -name '*â*' -execdir rename 'â' '' {} \;
这将像以前一样找到所有内容,除了它会使用 find 还按名称过滤名称中包含 â 的文件(因为对不匹配的文件运行重命名命令是毫无意义的),然后rename
运行它们分别来自找到它们的目录。
答案2
您是否只是想从一个文件中删除该字符但无法做到这一点?你可以输入mv how-
tabhow-8093-to
或mv how-?8093-to how-8093-to
吗?
答案3
您可以尝试使用补码字符类来解决问题,例如:
find . -type d | xargs rename 's/[^A-Za-z0-9 ]//'
但是,在 Ubuntu 10.04 系统上,我无法使用您的示例文件名和rename
.也许你的 Perl 安装或语言环境有问题?
答案4
我不知道您使用的 rename 版本(我使用的是 util-linux 版本)如何,但在我的 Fedora 15 上可以使用:
rename 'â' '' how-â8093-to
来自重命名手册:
NAME
rename - Rename files
SYNOPSIS
rename from to file...
rename -V
DESCRIPTION
rename will rename the specified files by replacing the first occurrence of from in their name by to.
我读不到有关您正在使用的 sed 类语法的任何内容。