sbk*_*sbk 2 perl file-io symlink perl-module directory-traversal
我正在编写一个 Perl 脚本来删除目录中的符号链接,并且我注意到当前使用 find 命令的方法需要花费相当多的时间。我正在寻找更有效的解决方案。
这是当前的代码片段:
system("find '$dir' -type l -exec rm -f {} \\;");
Run Code Online (Sandbox Code Playgroud)
我还尝试了使用 unlink 和 glob 的替代方案:
unlink glob("$dir/*") if -e $dir;
Run Code Online (Sandbox Code Playgroud)
然而,这两种方法似乎都有其缺点,我想知道是否有更优化的方法来实现 Perl 中的符号链接删除。
任何有关优化删除过程的见解或建议将不胜感激。谢谢你!
附加信息:
无需将诸如find和 之类的外部进程拖入rm其中。File::Find该任务可以纯粹在 perl 中使用遍历目录树来完成:
#!/usr/bin/env perl
use warnings;
use strict;
use File::Find;
my $dir = ...; # Fill in the blanks
find(sub { unlink $_ if -l $_ }, $dir);
Run Code Online (Sandbox Code Playgroud)