java - 使用 perl/java 将数据库中现有的图像代码重命名为新图像代码

标签 java perl rename swap file-rename

我正在尝试使用 Perl 将数据库目录中的一组图像的代码重命名为新的代码。 代码的格式为XXXX_XXXX_V1.jpg。我需要做的就是用设计者输入的新代码替换 XXXX_XXXX ,图像位于 /usr/site/html/images/p

针对这种情况我应该采取什么方法? 我应该进入目录,然后搜索目录中现有的代码,然后执行交换吗?

交换代码后,我需要说“成功交换图片”,然后显示所有服务器的 http://servername/images/p/n/ct/CODE_V1.jpg View 以便用户可以查看图片来确认操作是否成功。

欢迎任何输入,我正在研究这个问题,我很快就会粘贴一些代码。

谢谢

最佳答案

Perl 非常适合这项任务,我认为许多其他语言也是如此。但是,如果您已经了解 Perl,那么这对您来说将是一项非常简单的工作。

看看File::Find::Rule作为在目录树中查找和处理大量文件的简单方法。您可以设置规则,仅包含符合您特定要求的文件,而绕过所有其他文件。您还可以为那些符合您的规则的文件设置处理程序。

在您的处理程序中,您可以进行您认为必要的重命名。

如果文件都在一个目录中,并且不需要确定哪些文件符合条件的标准(或规则)列表,您可以只使用 opendir 和 readdir 以及文件检查,例如 -f .

一旦您发布了一些显示您遇到困难的代码以及有关代码的具体问题,我们实际上可以提供更具体的帮助。您提出的问题太宽泛,无法得到具体答案。

更新:我昨晚做了一些查看 File::Find 的工作。它遍历了我的 Windows 计算机上数千个目录中的大约 100,000 个文件,大约花费了两分钟。 sub Want 只是做了一个简单的文件和目录计数,这样我就可以只测试 File::Find 的效率。在第一次回调时希望脚本输出“Started”。我这样做的原因是因为从历史上看,我发现 File::Find 在具有大型文件系统的 Windows 上实际启动其回调循环需要很长时间。

然后,我在 Linux 计算机上的类似大小的文件结构上运行相同的脚本。

我发现在 Strawberry Perl 5.12.2 和 $File::Find::VERSION 1.15 下,我之前在评论中提到的错误似乎已被清除。所需的回调几乎立即开始,而当我使用 5.8.x 时,回调将需要很长时间才能启动。当然这是在windows上。在 Linux 上,我从来没有遇到过问题。

但是,相比之下,在我的 Windows 系统上处理类似复杂目录树的 File::Find 测试脚本在“首次运行”时遍历 100,000 个文件所需的时间大约是在我的 Linux 系统上的十倍。随后的运行差异甚至更加显着,因为 Linux 可能正在执行一些文件系统缓存。

无论如何,我建议如果您确实使用 File::Find 或 File::Find::Rule,请确保您正在运行最新的 Perl(5.12.2 或 5.14.1)以及File::查找最新 Perl 附带的版本。

关于java - 使用 perl/java 将数据库中现有的图像代码重命名为新图像代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6524858/

相关文章:

java - 你能在java中用一个变化的变量调用不同的方法吗?

java - 在java中调用random类的random方法

perl - WWW::Mechanize ssl 跨站点登录失败 cookie_jar 未填充

c++ - 如何重命名我不知道扩展名的文件?

eclipse - 如何以类似 Netbeans 的方式重命名/重构 Eclipse PDT 中的变量

python - 重命名包含空格的文件名

java - 分享 Instagram Story 的贴纸坏了?

java - 处理白屏?

php - 通过命令行获取 Windows 7 ODBC 数据源列表

arrays - 在单个命令行中执行 grep 和 sed