Perl文件夾操作
Perl創建、刪除、修改文件夾
mkdir("文件夾名稱",權限);
rmdir("文件夾名稱");
rename("舊文件夾名稱","新文件夾名稱");
權限:4代表可讀,2代表可寫,1代表可執行;權限的組成:[前綴0][文件所有者][同組用戶][其他用戶]。
生成的數字序列由擁有的權限對應的數字加和計算得到。
如‘0755’代表:文件所有者可讀可寫可執行,同組用戶可讀可執行,其他用戶可讀可執行。
注意:
- 一次只能創建/刪除一個文件夾;
- 刪除的文件夾必須爲空文件夾;
- 爲了更安全的操作文件夾,一般在各種操作後添加“|| die "失敗描述信息$!"”,意思爲:“如果失敗了,輸出信息,然後終結進程”。另外$!是系統錯誤提示信息。
#!user/bin/env perl -w #預定義兩個文件夾路徑 @dirs=("newFolder","newFolder/insideFolder1","newFolder/insideFolder2"); #創建文件夾 #Perl mkdir 只能創建最後端的文件夾,它認爲中間的文件夾都是已經存在了的 #如果你先執行下面這句,則會告訴你找不到這樣的文件夾 #mkdir ($dirs[1],0755) || die "folder $dirs[1] can not be created! cause by:$!" ; foreach $dir (@dirs) { mkdir ($dir,0777) || die "folder $dir can not be created! cause by:$!"; } #rename方法可以更改文件夾名稱 rename("newFolder/insideFolder1","newFolder/insideFolder3")||die "rename folder failed! cause by:$!"; #刪除文件夾,被刪除的文件夾必須爲空 rmdir($dirs[2]) || die "remove folder failed!cause by:$!";
Perl獲取文件夾列表
1.獲取文件夾操作句柄
opendir(句柄名稱,文件夾路徑);
2.讀取文件列表
readdir(句柄名稱);
3.關閉文件句柄
closedir(句柄名稱);
其他方法:
1.glob獲取文件夾下列表
glob(文件夾路徑/*);
2.glob方法的簡寫
<文件夾路徑/*>;
XXXXdir和glob方法對比:
1.glob方法返回文件數量有限,如果文件夾下文件過多,則只會提示“過多的內容”;
2.glob方法返回的文件列表帶路徑;
3.glob方法由於是調用本地機器的方法協助工作,故效率低。
#!user/bin/env perl -w
#獲取文件夾列表
opendir (FOLDER,"newFolder") || die "can not open folder!cause by:$!";
my @folders1 = readdir(FOLDER);
#如只需要某一些滿足條件的內容,可以使用下面寫法
#my @folders = grep(!/\.+/,readdir(FOLDER));
foreach $file (@folders1)
{
print "$file\n";
}
closedir(FOLDER);
print "-" x 50;
print "\n";
my @folders2 = glob("newFolder/*");
#簡化爲:my @folders = <"newFolder/*">;
foreach $file (@folders2)
{
print "$file\n";
}
輸出結果:
.
..
insideFolder1
insideFolder2
--------------------------------------------------
newFolder/insideFolder1
newFolder/insideFolder2