gpt4 book ai didi

perl - 将 500 多个文件的名称从 Unicode U+0600 转换为文本

转载 作者:太空宇宙 更新时间:2023-11-03 17:13:44 25 4
gpt4 key购买 nike

由于压缩文件 t 从服务器多次移动到另一个服务器,大量图像的名称已更改.. 从文本到 Unicode U+0600 ... 这是阿拉伯语 BTW

这是一个例子

#U062a#U0637#U0628#U064a#U0642#U0627#U062a-#U0645#U062c#U0627#U0646#U064a#U0629-#U0644#U0644#U062a#U0644#U0648#U064a#U0646.jpg

我用这个工具来转换它http://www.branah.com/unicode-converter不过,我不得不删除“#”。

问题是有超过 500 个文件。可能高达 1000。我正在使用 WordPress,所有文件都在服务器上。

有没有办法转换它们?可能使用 PHP 或任何脚本。


更新 01:

我发现了这个有用的工具,因为我使用的是 CentOs:叫做convmv

这是该工具的链接:https://www.j3e.de/linux/convmv/

这是一个 Perl 脚本。这是它的命令列表:https://www.j3e.de/linux/convmv/man/

问题还是不知道从哪里来,到哪里去..

有没有人有这方面的经验?


更新 02:尝试运行 Kenosis 提供的脚本

我首先运行脚本来测试它:

# perl -wc perl_script.pl
perl_script.pl syntax OK

我在没有检查语法的情况下运行脚本:

# perl -w perl_script.pl
Testing: #U0627#U0644#U0623#U064a#U0628#U0627#U062f-Air-150x150.png -> lfybd-Air
-150x150.png
Testing: #U0627#U0644#U0623#U064a#U0628#U0627#U062f-Air-244x300.png -> lfybd-Air
-244x300.png
Testing: #U0627#U0644#U0623#U064a#U0628#U0627#U062f-Air-332x190.png -> lfybd-Air
-332x190.png
Testing: #U0627#U0644#U0623#U064a#U0628#U0627#U062f-Air-518x400.png -> lfybd-Air
-518x400.png
Testing: #U0627#U0644#U0623#U064a#U0628#U0627#U062f-Air.png -> lfybd-Air.png
File 'perl_script.pl' not in convertible format!
Done!

非常感谢您的帮助。谢谢

最佳答案

也许以下内容会有所帮助:

use strict;
use warnings;
use open qw(:std :utf8);

my $rename = 0;

for my $oldFileName (<*>) {
my $newFileName = $oldFileName;
$newFileName =~ s/#U([a-f0-9]+)([^#]+)?/chr( hex $1 ) . ( $2 ? $2 : '' )/gei;

if ( $newFileName eq $oldFileName ) {
warn "File '$oldFileName' not in convertible format!\n";
next;
}

if ( -e $newFileName ) {
warn "File '$newFileName' already exists!\n";
next;
}

print $rename ? 'Renaming: ' : 'Testing: ';
print "$oldFileName -> $newFileName\n";
rename $oldFileName, $newFileName if $rename;
}

print "Done!\n\n";

首先在测试或备份目录上运行它!

将脚本放到需要重命名文件的目录下,然后调用如下:

perl 脚本.pl

脚本将读入所有文件名。该子例程将名称转换为 Unicode,然后使用模块 Text::Unidecode 将其解码为 ASCII。 .如果文件名不是可转换格式或文件名已经存在,您会收到警告:出于安全原因。

默认情况下,$rename 设置为零 (false),因此您可以进行非侵入式运行以查看重命名结果。将 $rename 设置为 1 或非零值以进行实际重命名。

希望这对您有所帮助!

关于perl - 将 500 多个文件的名称从 Unicode U+0600 转换为文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20728996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com