重命名目录名的字符“â”?

重命名目录名的字符“â”?

我正在尝试将â目录名称的重命名字符重命名为空白。例如,名为 的目录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-tomv 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 类语法的任何内容。

相关内容