我有个问题
我尝试了一些功能
DIR = /路径/ TMP /
if [-d"$ DIR"]; 然后
和
if [-f"$ DIR"]; 然后
但只检查/ path/tmp这条路径
我能怎么做?
Sie*_*geX 19
shopt -s nullglob dotglob
files=(*)
(( ${#files[*]} )) || echo directory is empty
shopt -u nullglob dotglob
Run Code Online (Sandbox Code Playgroud)
这个小脚本用files路径扩展中的每个文件填充数组*.然后它检查以查看数组的大小,如果它为0则打印'目录为空'.由于使用隐藏文件,这将使用dotglob.
要求解析的答案ls通常是一个坏主意和糟糕的形式.要理解原因,请阅读为什么不应该解析ls的输出
T.J*_*der 17
你可以使用ls -A这个:
if [ "$(ls -A "$DIR" 2> /dev/null)" == "" ]; then
# The directory is empty
fi
Run Code Online (Sandbox Code Playgroud)
-A显示所有隐藏文件和目录,除了.和..是永远存在的,所以这将是在任何文件或子目录的目录空目录和非空白的空白.
该2> /dev/null扔掉任何错误信息ls可以打印(注意选中一个不存在的目录会产生假阳性,但你说你已经检查了它的存在).检查您没有读取权限的目录也会产生误报.