在我的bash脚本中,我需要检查文件夹的内容,但其路径可以使用不同的“结尾”树来更改
最初我的文件夹是:
border:none;
然后,用户可以使用树可能结尾修改我的文件夹的名称
/home/myuser/my_folder
因此,用户可以添加“_aaaa”或“_bbbb”“_ cccc”
这些后缀是已知的。
在我的bash脚本中,如果有人更改名称,我如何用“ls”检查我文件夹的内容? N.B:我只需要检查这个文件夹,所以如果有一个名为“/ home / myuser / my_folder_ssss”的文件夹不能匹配且不能显示内容
答案 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_folder
或my_folder_aaaa
,my_folder_bbbb
,my_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}}