检查文件夹是否包含 glob

2023-12-26

在我的 Mac 上,我试图找到一种方法来检查服务器上已安装的卷,以查看该目录是否通过 shell 脚本接收到日志文件,该脚本将用于launchd设置一个时间间隔。

根据我的搜索和历史记录,我使用过:

$DIR="/path/to/file"
THEFILES=(`find ./ -maxdepth 1 -name "*.log"`)
if [ ${#THEFILES[@]} -gt 0 ]; then 
    echo "exists"
else
    echo "nothing"
fi

如果 shell 脚本放置在该特定目录中并且文件存在。但是,当我将脚本移出该目录并尝试:

THEFILES=(`find ./ -maxdepth 1 -name "*.log"`)
cd $DIR
if [ ${#THEFILES[@]} -gt 0 ]; then 
    echo "exists"
else
    echo "nothing"
fi

我得到了持续的回报nothing。我认为这可能与深度有关,所以我改变了-maxdepth 1 to -maxdepth 0但我仍然得到nothing。通过搜索我遇到了“检查目录中是否存在某种文件类型/扩展名 https://stackoverflow.com/a/3856879/1952287”并尝试过:

THEFILES=$(ls "$DIR/.log" 2> /dev/null | wc -l)
echo $THEFILES

但我返回了一个常量0。当我进一步搜索时,我遇到了“从 shell 脚本检查目录是否包含文件 https://stackoverflow.com/a/91558/1952287“并尝试使用一种变体find with:

THEFILES=$(find "$DIR" -type f -regex '*.log')
cd $DIR
if [ ${#THEFILES[@]} -gt 0 ]; then 
    echo "exists"
else
    echo "nothing"
fi

并返回空白。当我尝试时:

if [ -n "$(ls -A $DIR)" ]; then
    echo "exists"
else
    echo "nothing"
fi

我收到返回的空白终端。对此answer https://stackoverflow.com/a/17902999/1952287我没有prune or shopt在我的 Mac 上。那么,我如何检查已安装服务器的目录,以查看是否存在具有特定扩展名的特定文件,并且该文件不会从隐藏文件中给出错误返回?

EDIT:

根据评论,我尝试使用以下方法删除深度:

THEFILES=$(find ./ -name "*.log")

但我得到的是空白回报但如果我放弃了.log文件在那里运行,但我不明白为什么其他没有返回nothing除非考虑隐藏文件。谢谢l'L'l https://stackoverflow.com/users/499581/lll我学会了-prune was in find的实用程序,但当我尝试时:

if [ -n "$(find $DIR -prune -empty -type d)" ]; then

我得到了持续的回报nothing当存在 LOG 文件时。


Bash 内置compgen“根据选项显示可能的完成”并且是通常用于自动完成脚本 http://www.tldp.org/LDP/abs/html/tabexpansion.html,但也可以用于此目的。默认情况下它输出完成列表,因此将其重定向到/dev/null.

#!/bin/bash
dir=/some/log/dir
if compgen -G "$dir/*.log" > /dev/null; then
    # do stuff
fi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查文件夹是否包含 glob 的相关文章

随机推荐