Perl文件和目錄操做

Perl操做文件less

-e 判斷文件是否存在socket

  die 「Oops! A file called‘$filename’already exists.\n」; if –e $filename;函數

-M 查看文件多久沒有修改測試

  warn 「Config file is looking pretty old!\n」; if –M CONFIG > 28; (文件在過去的28天都沒修改過)ui

example:spa

找到大於100K,而且在90天內未被訪問過的文件索引

my@ariginal_files = qw/ fred barney betty Wilma pebbles dino bam-bamm/;
my @big_old_files; #要移到備份磁帶上的文件
foreach my $filename (@original_files){
push @big_old_files, $filename
if –s $filename > 100_100 and –A $filename > 90;
}ip

檢測選項含義
-r 文件或目錄對此(有效的)用戶(effective user)或組是可讀的
-w 文件或目錄對此(有效的)用戶或組是可寫的
-x 文件或目錄對此(有效的)用戶或組是可執行的
-o 文件或目錄由本(有效的)用戶全部
-R 文件或目錄對此用戶(real user)或組是可讀的
-W 文件或目錄對此用戶或組是可寫的
-X 文件或目錄對此用戶或組是可執行的
-O 文件或目錄由本用戶全部
-e 文件或目錄名存在
-z 文件存在,大小爲0(目錄恆爲false)
-s 文件或目錄存在,大小大於0(值爲文件的大小,單位:字節)
-f 爲普通文本
-d 爲目錄
-l 爲符號連接
-S 爲socket
-p 爲管道(Entry is a named pipe(a「fifo」))
-b 爲block-special 文件(如掛載磁盤)
-c 爲character-special 文件(如I/O 設備)
-u setuid 的文件或目錄
-g setgid 的文件或目錄
-k File or directory has the sticky bit set
-t 文件句柄爲TTY(系統函數isatty()的返回結果;不能對文件名使用這個測試)
-T 文件有些像「文本」文件
-B 文件有些像「二進制」文件
-M 修改的時間(單位:天)
-A 訪問的時間(單位:天)
-C 索引節點修改時間(單位:天)ci

 

目錄操做:it

 chdir  改變工做目錄

  chdir 「/etc」or die 「cannot chdir to /etc: $!」;

glob  文件名匹配

  my @pm_files = glob 「*.pm」  匹配全部.pm文件

unlink  刪除文件 (返回值爲成功刪除的文件個數)

  unlink 「slate」, 「bedrock」, 「lava」;

  unlink glob 「*.o」;  刪除全部.o文件

rename  重命名 (相似於mv)

  rename 「old」, 「new」;

link  硬鏈接

symlink  軟鏈接

mkdir  建立目錄

  mkdir 「fred」, 0755 or warn 「Cannot make fred directory: $!」;

  my ($name, $perm) = @ARGV; #前面兩個參數是名字和權限
  mkdir $name, oct($perm) or die 「cannot create $name: $!」; #oct將參數強制轉爲8進制,無論前面有沒有0

 

 

目錄句柄

從給定目錄獲得其文件名列表的方法還能夠使用目錄句柄(directory handle)。目錄句柄外形及其行爲都很像文件句柄。打
開(使用opendir 而非open),從中讀入(使用readdir 而非readline),關閉(使用closedir 而非close)。不是讀入文件的內
容,而是將一個目錄中的文件名(以及一些其它東西)讀入,如:

my $dir_to_process = 「/etc」

opendir DH, $dir_to_process or die 「Cannot open $dir_to_process: $!」;
foreach $file(readdir DH) {
print 「one file in $dir_to_process is $file\n」;
}
closedir DH;

readdir用在while中

while ($name = readdir DIR) {next unless $name =~ /\.pm$/;… more processing…}

相關文章
相關標籤/搜索