使用 perl 的 rename 函数重命名 zip 文件名 [关闭]

Posted

技术标签:

【中文标题】使用 perl 的 rename 函数重命名 zip 文件名 [关闭]【英文标题】:rename a zip file name using rename function using perl [closed] 【发布时间】:2020-09-28 02:36:09 【问题描述】:

这是我的示例代码

#!/usr/bin/perl
use strict;
use warnings;
use POSIX qw(strftime);

my $day = strftime "%m/%d/%Y", localtime;

my $file = "abcMONcde.zip";
my $zipfile = $file;
rename("home/abc/$file","home/abc/$file.$day") || die("Error in renaming");

当我们运行这段代码时,我们在重命名函数中遇到错误,这段代码有什么问题。

【问题讨论】:

你遇到了什么错误? or die("Can't rename \"home/abc/$file\" to \"home/abc/$file.$day\": $!\n"); 当我运行此代码时出现错误“重命名错误” 是的,但是rename 返回了什么错误?我展示了如何获得它 【参考方案1】:

实际上你的$day 打印输出abcMONcde.zip06/09/2020:

你怎么能像这样重命名文件。不可能的。该文件夹不允许正斜杠和反斜杠。

您需要重命名$day=~s/\//\-/g;

让我们试试这段代码:

#!/usr/bin/perl
use strict;
use warnings;
use POSIX qw(strftime);
use File::Copy;

my $day = strftime "%m/%d/%Y", localtime; $day=~s/\//\-/g;

您能否使用- 而不是/,根据brian d foy cmets,这是一个更好的解决方案。

my $day = strftime "%m-%d-%Y", localtime;


my $file = "abcMONcde.zip";
my $zipfile = $file;

您需要考虑将路径存储在单个变量(实际路径和目标路径)中。

my $actfilename = "home/abc/$file";
my $destfilename = "home/abc/$file.$day";

有时直接路径不起作用(根据我的经验)

rename($actfilename,$destfilename) || die("Error in renaming");

【讨论】:

strftime 代码不是以斜杠开头,然后用破折号替换它们,只需在格式中使用破折号。 "%m-%d-%Y" 优秀的冠军..我没看到..感谢您的指出。 +1 谢谢,它正在工作。我认为问题正在发生在 dir 现在它已解决。

以上是关于使用 perl 的 rename 函数重命名 zip 文件名 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

linux下rename用法--批量重命名

linux下rename用法--批量重命名

2.13 批量重命名和移动

Linux下批量重命名的方法

R语言dplyr包select函数rename函数dataframe变量抽取及重命名实战

C 语言文件操作 ( remove 函数删除文件 | rename 函数重命名文件 | 代码示例 )