Linux重命名不在utf-8中的多个文件

我有旧的桑巴服务器文件,在文件名中不显示像ä,ö,ü,õ这样的特殊字符。 他们显示为? 标记。 因为我的客户无法打开这些文件或文件夹。 他们看到的文件和文件夹,但他们的名字是空白的。 在服务器中,它们是这样显示的:例如T?tunnid.doc。

一旦我用mv命令对它们进行了重命名,那么我的客户端就可以打开文件夹和文件。

有谁知道任何脚本,我可以用来重命名所有的文件? 在他们标记。 所以他们展示 – 而是。 我想重命名特定文件夹中的文件,例如/ samba / documents / …

您可以尝试使用convmv重命名文件更改它的字符编码。 通常这个符号? 说不同的文件名和终端/文件系统/别的编码。 尝试确定哪些字符编码您的文件使用,并像这样运行它:

 convmv -fcp1251 -tutf8 * 

您可以编写简单的脚本或只是shell循环遍历目录并重命名所有需要的文件:

 find /full/path -execdir convmv --notest -fcp1251 -tutf8 {} \; 

但首先要确保你使用正确的字符编码。

我不是100%肯定这会工作,所以我想一些构想。

 find . -type d -name '*?*' -execdir rename '?' '_' {} \; 

我检查了重命名命令,我认为它会工作

 rename "s/[^A-Za-z0-9-_]/_/g" 

但是,我怎么能添加一个目录。 所以它只检查那个目录不是整个ubuntu。