我有一个文件夹,里面有两个文件夹,如下所示:
/vobs/code
/vobs/code/item
/vobs/code/image
我想获取这两个文件夹的绝对路径。在我的 perl 脚本中,我的代码如下所示。
@folder = `cd /vobs/code/item;ls -d $PWD/**`; or
@folder = `cd /vobs/code/item;ls -d $PWD/*`;
从网上说,使用两个通配符将显示文件和目录,而使用一个通配符将显示文件夹,但我在控制台中尝试过,它还提供带有或额外一个通配符的文件和文件夹。
我在执行 perl 脚本后得到的结果没有给出/vobs/code 中的文件夹路径。而是显示根文件夹路径。我在 cd 和 ls 之间放置了一个 pwd,pwd 显示它实际上cd到目录下,执行下一条命令。
@folder = `cd /vobs/code/item;ls -d $pwd/*`
上面的命令产生与第一个和第二个命令相同的输出,因为 pwd 是小写的,并且它显示根文件夹路径。
我试过 readlink -f 但它需要文件夹名称,否则它会提示错误。我可以尝试获取文件名和 pwd 路径并将其加入成为一个变量,但它有点麻烦,我会接受它如果我找不到任何解决方案,这是最后的手段。请帮忙谢谢
最佳答案
您可以使用 glob扩展通配符。使用 grep要过滤列表,-f
和 -d
(参见 -x)分别检查文件和目录。
my @files_and_directories = glob '/vobs/code/*';
my @files = grep -f, @files_and_directories;
my @directories = grep -d, @files_and_directories;
关于linux - 在 Linux 和 Perl 中列出文件夹的绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39406025/