使用 perl 使用重命名功能重命名 zip 文件名

0 unix perl

这是我的示例代码

#!/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");
Run Code Online (Sandbox Code Playgroud)

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

ssr*_*012 5

实际上你$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;
Run Code Online (Sandbox Code Playgroud)

您能否根据评论使用它-来代替/更好的解决方案brian d foy

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


my $file = "abcMONcde.zip";
my $zipfile = $file;
Run Code Online (Sandbox Code Playgroud)

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

my $actfilename = "home/abc/$file";
my $destfilename = "home/abc/$file.$day";
Run Code Online (Sandbox Code Playgroud)

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

rename($actfilename,$destfilename) || die("Error in renaming");
Run Code Online (Sandbox Code Playgroud)

  • `strftime` 代码不是以斜杠开头,然后用破折号替换它们,只需在格式中使用破折号即可。`“%m-%d-%Y”` (2认同)