2017-09-05 204 views
1

我一直在嘗試使用perl重命名過去一小時的文件。我一直在研究,並嘗試了一切,但沒有任何工作。我如何使用perl重命名文件?這裏是我的腳本:如何使用Perl重命名文件

use strict; 
use warnings; 
use Time::Piece; 
use File::Copy qw(move); 


# Open the log file 
    my $log_file = 'testLog.log'; 
    open my $log_fh, '<', $log_file or die "Could not open file $log_file: 
$! +"; 

# Create New File 
    my $new_log_file = 'testLog.log'; 

# My file size (bytes) 
    my $logFileSize = -s $log_file; 

# My file size (Mb) 
    my $logFileSizeMB = $logFileSize/1000000; 

# File size limit 
    my $fileSizeLimit = 100; 

# Get Date 
my $date = localtime->strftime('%m/%d/%Y'); 

# New File Name 
my $newFileName = "testLog_$date.log"; 

sub main { 

    if ($logFileSizeMB > $fileSizeLimit) { 

     close $log_fh or die "Could not close file $log_file: $!"; 

     #print "$newFileName\n"; 
     rename("testLog.log", "testLog_$date.log") || die ("Error Renaming 
File"); 



     #open my $new_log_fh, '>', $new_log_file or die "Could not open file 
$new_log_file: $! +"; 
     #close $new_log_fh or die "Could not close file $new_log_file: $!"; 

     print "New log file created successfully!"; 

    } else { 

     print "File size is under $fileSizeLimit"; 

    } 


    exit(0); 
} 

main(); 

當我運行這個文件保持不變......就如何解決這一問題的任何想法?

+0

你會得到什麼錯誤? – ikegami

+0

只是「錯誤重命名文件在DeleteLogFile.pl第58行」 –

+0

好吧,讓我換句話說:「重命名」返回什麼錯誤? (更改'死(「錯誤重命名爲 文件」)''死(「錯誤重命名\」testLog.log \「爲\」testLog_ $ date.log \「:$!\ n」)') – ikegami

回答

7

/由於是目錄分隔符,因此不是文件名的有效字符。您有效地要求將當前目錄中的testLog.log重命名爲目錄testLog_09/05中的2017.log。該目錄不存在。

變化

my $date = localtime->strftime('%m/%d/%Y'); 

my $date = localtime->strftime('%m-%d-%Y'); 

更重要的是,使用自然排序的格式。

my $date = localtime->strftime('%Y-%m-%d'); 
+0

這工作......錯誤是怎麼回事「沒有這樣的文件或目錄」?如果這是新名稱格式的問題 –

+1

您要求將文件重命名爲「testLog_09/05」目錄中的「2017.log」。該目錄不存在。 – ikegami

+0

噢好吧,這很有道理......謝謝! –