如何过滤重复的符号链接

如何过滤重复的符号链接

我有一组文件的不同符号链接别名(请注意,某些符号链接可能指向同一目录中的其他符号链接),我想获取它们指向的唯一文件列表。

例子:

alias_a1 -> alias_a2
alias_a2 -> /somedir/a
alias_b1 -> /somedir/b
alias_b2 -> /somedir/b
alias_c1 -> /somedir/c

最后,我希望将/somedir/a /somedir/b /somedir/c其作为参数传递给另一个命令。

答案1

libcrealpath()函数可以通过解析所有符号链接来完成大部分工作;编写类似于此的脚本来过滤唯一的结果:

#!/usr/bin/env perl
use Cwd;
my %files = map {Cwd::realpath($_) => 1} @ARGV;
my @files = sort keys %files;

# This example will run: mycommand arg1 arg2 file1 file2 file3 arg3
system {"mycommand"} "mycommand", "arg1", "arg2", @files, "arg3";

文件列表取自命令行参数。

uniquefiles.pl mydirectory/*

相关内容