perl删除Windows下的图片缓存缩略图(Thumbs.db)

     接手以前别人做的项目,发现SVN里的ignore里并没有对*.db处理,导致图片的缓存缩略文件都被提交了,而我只要打开图片文件夹,就意味着Thumbs.db发生了改变。

要做的事情有两个:

一、更改svn的设置,以后不再提交Thumbs.db文件

二、批量删除指定目录下的Thumbs.db文件

所以用perl写了一个,代码是在之前的 perl遍历目录 做了一些修改,主要有两点自己注意了:

一、文件路径,Windows下默认为“\  ”而linux下则是”/”, 所以统一改为”/”

二、比较两个字符串相等需要使用eq 而不是 == (==返回数值相等,而eq返回的是字符串相等)

三、unlink删除文件,需要指定文件的完整路径

四、perl中的else if 写法为elsif 没有那个“e”

五、perl正则匹配方式为 =~ 或 !~

完整的代码如下,需要更改规则可以修改代码中的这一段

#!/usr/bin/perl

    use strict;

    use warnings;

     

    my $path = "C:/FlexApp/xx";

    my $filecount = 0;

     

    sub parse_env {

         my $path = $_[0]; #或者使用 my($path) = @_; @_类似javascript中的arguments

         my $subpath;

         my $handle;

     

         if (-d $path) {#当前路径是否为一个目录

             if (opendir($handle, $path)) {

                 while ($subpath = readdir($handle)) {

                     if (!($subpath =~ m/^\.$/) and !($subpath =~ m/^(\.\.)$/)) {

                         my $p = $path."/$subpath";

     

                         if (-d $p) {

                             parse_env($p);

                         } elsif ($subpath eq "Thumbs.db") {

                             ++$filecount;

                                print "The file path:".$p."------------The file name:$subpath\n";

                             unlink($p) or warn "failed on $subpath:$!";

                         }

                     }

                 }

                 closedir($handle);

             }

         }

     

         return $filecount;

    }

     

    my $count = parse_env $path;

    my $str = "删除文件的总数:".$count;

     

    print $str;

控制台上输出的结果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python攻城狮

Python网络爬虫(五)- Requests和Beautiful Soup1.简介2.安装3.基本请求方式5.程序中的使用4.BeautifulSoup4

Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,...

1384
来自专栏零基础使用Django2.0.1打造在线教育网站

零基础使用Django2.0.1打造在线教育网站(十四):用户密码找回

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

3401
来自专栏塔奇克马敲代码

Windows环境下的RTKPlot_Qt版本编译时遇到的问题和解决方法

1835
来自专栏安恒信息

安恒信息提示漏洞:CVE-2014-6271 bash远程命令执行漏洞

今日爆出CVE-2014-6271 bash远程命令执行漏洞。bash是Linux用户广泛使用的一款用于控制命令提示符工具,导致该漏洞影响范围甚广。同时,当HT...

3115
来自专栏AndroidTv

如何用Android Studio同时使用SVN和Git管理项目

这篇来讲讲如何在 Android Studio 上同时用 SVN 和 Git 来管理项目。我知道,你肯定会说我吃饱了撑着,没事找事做,为啥要同时用 SVN 和 ...

3926
来自专栏Python攻城狮

GitHub 系列之「Git 进阶」1.用户名和邮箱2.alias3.其他配置4.diff5.checkout后面的一长串是commit_id,是每次commit的SHA1值,可以根据 git log

我们知道我们进行的每一次 commit 都会产生一条 log,这条 log 标记了提交人的姓名与邮箱,以便其他人方便的查看与联系提交人,所以我们在进行提交代码的...

882
来自专栏码洞

RPC 服务器之【多进程描述符传递】高阶模型

今天老师要给大家介绍一个比较特别的 RPC 服务器模型,这个模型不同于 Nginx、不同于 Redis、不同于 Apache、不同于 Tornado、不同于 N...

1412
来自专栏后端技术探索

nginx,memcached,redis网络模型总结

nginx采用多进程模型,含一个master进程和多个worker进程,worker进程数目可配置,一般与机器CPU核心数目一致,master进程主要职责是:接...

2382
来自专栏祥子的故事

python | os包常用命令介绍

3985
来自专栏hbbliyong

WCF配置文件与文件下载之坎坷路

题外话:本以为我会WCF了,精通WCF了,毕竟刚做过一个WCF的项目,不就是写写契约接口,然后实现接口,改下配置。最后用控制台或者服务发布一下,不就能用了。不...

3327

扫码关注云+社区

领取腾讯云代金券