linux - 在 Linux 和 Perl 中列出文件夹的绝对路径

标签 linux perl shell unix

我有一个文件夹,里面有两个文件夹,如下所示:

/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/

相关文章:

linux - 如何让 Awk 在 shell 脚本中使用 Bash 数组变量?

linux - 带 Shell 的 Qt 程序

linux - grep/touch -mtime 检查最近 XX 分钟内的日志

python - 解释性语言如何避免使用全局解释器锁(GIL)?

xml - 如何提取XML文件的特定元素?

linux - 在 Jenkins 管道上运行 bash 命令

linux - 使用 shell 脚本读取多个文件/文件夹

mysql - 将 mysql 转换为 sqlite 时出错

perl - 转储 XML::LibXML 元素

java - Regexp::Assemble 的 Java 等价物是什么?