|||
对于分类的文件夹下又有子文件夹,如果要将所有子文件夹下的相应文件取出来,通过切换文件夹,不断Ctrl+C和Ctrl+V是一种让手疼的办法。而用perl就只要将下面的脚本放到当前文件夹下,在命令行中执行就可以替代手疼的方法。下面是代码,希望高手们有更好的方法和大家分享。
#############################
#!/usr/bin/perl -w
# 当前文件夹下所有的文件存入数组中
my @allFiles=glob("*");
# 执行循环,每个文件都要判断是否为目录
foreach my $subdir(@allFiles) {
next unless (-d $subdir);
# 如果是目录则打开目录句柄
opendir(DIR, $subdir);
# 从目录句柄中读取目录中的文件
@fileName=readdir(DIR);
# 关闭目录句柄
closedir DIR;
# 判断打开是否成功
print "Dir is: $subdir:n";
# 进入每个目录中,loop所有的文件,然后对文件进行处理。
# ".\"是Windows系统中当前目录
# 如果是Linux系统下,则当前目录用”./"
chdir(".\$subdir");
foreach my $file(@fileName) {
# 如果这些文件名能够匹配,则将这个文件cp到特定文件夹中
if ($file =~ /$pattern/) {
print $file, "n";
# copy相应文件到文件夹D:/test/中
`cp $file D:\test\`
} else {
next;
}
}
# 还原上一级目录
chdir("..\");
}
###############################
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-23 02:10
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社