我有一组文件的不同符号链接别名(请注意,某些符号链接可能指向同一目录中的其他符号链接),我想获取它们指向的唯一文件列表。
例子:
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/*