在BASH中打印具有可变路径的文件夹的内容

时间:2016-07-12 07:53:27

标签: bash ls

在我的bash脚本中,我需要检查文件夹的内容,但其路径可以使用不同的“结尾”树来更改

最初我的文件夹是:

border:none;

然后,用户可以使用树可能结尾修改我的文件夹的名称

/home/myuser/my_folder

因此,用户可以添加“_aaaa”或“_bbbb”“_ cccc”

这些后缀是已知的。

在我的bash脚本中,如果有人更改名称,我如何用“ls”检查我文件夹的内容? N.B:我只需要检查这个文件夹,所以如果有一个名为“/ home / myuser / my_folder_ssss”的文件夹不能匹配且不能显示内容

4 个答案:

答案 0 :(得分:2)

如果正则表达式匹配,您可以在 find 中使用正则表达式谓词并执行 ls

find /home/myuser/ -regex ".*/my_folder\(_aaaa\|_bbbb\|_cccc\)$" -exec ls "{}" ";"

答案 1 :(得分:1)

如果要显示文件夹内容,并且已知后缀列表不太长,请尝试此操作:

ls -d /home/myuser/my_folder/* /home/myuser/my_folder/.* /home/myuser/my_folder_aaaa/* /home/myuser/my_folder_aaaa/.* /home/myuser/my_folder_bbbb/* /home/myuser/my_folder_bbbb/.* /home/myuser/my_folder_cccc/* /home/myuser/my_folder_cccc/.* 2>/dev/null

-d:不列出目录内容。

2>/dev/null:将标准错误重定向到/dev/null;不会显示有关非现有目录的ls错误消息。

请注意,脚本中首选find

答案 2 :(得分:0)

似乎你需要这样的东西:

ls -1 | egrep "^my_folder(|_aaaa|_bbbb|_cccc)$"

此命令打印指定文件夹的名称(如果存在)。

ls -1每行打印一个目录中的所有项目名称。

egrep检查项目名称是否与my_foldermy_folder_aaaamy_folder_bbbbmy_folder_cccc匹配。

然后你可以用这个名字做任何你想做的事。例如,您可以使用以下方法检查内容:

ls -l `ls -1 | egrep "^my_folder(|_aaaa|_bbbb|_cccc)$"`

答案 3 :(得分:0)

以下将 ls /home/myuser/my_folder_* | grep "aaaa\|bbbb\|cccc" | while read x; do ls -l ${x:0:-1}; done 与您的说明中的模式匹配的文件夹

{{1}}