touch主要被用来改变文件的时间戳。在这里与大家共享我写的一个脚本。来实现touch当前目录以及当前目录下的所有文件。
主要思想是将当前目录入队。每次处理都从队列取队头元素, 如果队列不空,处理该目录下的所有文件,当再读到一个目录时,将其入队。这样处理直到队列空为止。
#!/usr/bin/perl
############################################################## # Touch all files in current directory and its subdirectory. #
# Author: Gavin Xu # #
##############################################################
#Queue length
$qlength = 0; #The index of first element
$index = 0; #stores all the elements
@queuelist=();
#insert an element into queue.
sub enque { $queuelist[$index+$qlength] = $_[0]; $qlength ++; }
#delete the first element in the queue.
sub delque { $tempvar = $queuelist[$index]; $qlength --; $index ++; return ($tempvar); }
#Get current directory
$dir = $ENV{'PWD'}; #insert the current directory in the queue.
enque($dir);
#width-first search the current directory.
while ( $qlength > 0 ) { $dir = &delque; if ( $dir ne "") { opendir(BIN, $dir) or die "Can't open $dir: $!"; while( defined ($file = readdir BIN) ) { # if $file is directory
if ( -d "$dir/$file" ) { next if $file =~ /^\.\.?$/; #insert complete path into queue.
$tmpvar = $dir."\/".$file; enque($tmpvar); } else { #touch the file
`touch $dir/$file` } } } closedir(BIN); }
|
阅读(2033) | 评论(0) | 转发(0) |