我正在學習和擴展由他人編寫的Perl腳本。它有一條線:Perl文件名更改
@pub=`ls $sourceDir | grep '\.htm' | grep -v Default | head -550`;
foreach (@pub) {
my $docName = $_;
chomp($docName);
$docName =~ s/\.htm$//g;
............}
我知道它首先使用UNIX命令取出所有htm文件,然後擺脫文件擴展名。
現在我需要做一件事,這也是非常重要的。也就是說,我需要通過用下劃線替換空格來更改存儲的實際文件的文件名。我被困在這裏,因爲我不確定我是否應該遵循他的代碼風格,通過使用UNIX來實現此目標,還是應該在Perl中執行此操作?重點是我需要修改磁盤上的實際文件,而不是用來保存文件名的字符串。
謝謝。
由於源和目標是在同一個目錄下,你可以使用'rename'。有關詳細信息,請參閱'perldoc -f rename'。 – shawnhcorey 2011-03-15 19:08:53
我用move(),但總是失敗,你認爲這是一個權限問題? – Kevin 2011-03-15 20:43:55
如果腳本的euid/egid與文件的所有權不匹配,那麼很可能是權限問題。當它失敗時它給出了什麼錯誤?嘗試添加'或死'$!\ n「'到你正在使用移動的那一行。 – BadFileMagic 2011-03-15 21:39:56