gpt4 book ai didi

linux - 检查bash上是否只有一个文件存在当前数据

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:28 25 4
gpt4 key购买 nike

如何检查当前日期是否只有一个文件。我有一个脚本:

name="nginx.log"
data=$(date +%Y.%m.%d)
current_nginx=$name.$data
cd /var/log/
for i in `ls "$name"*`; do
if [[ $i == "$current_nginx" ]]; then
echo "only one file is exists"
else
echo "other files is exists"
fi
done

我有文件:

ls -l /var/log/nginx.log*
-rw-r--r-- 1 root root 4814275 May 12 23:59 /var/log/nginx.log.2017.05.12.gz
-rw-r--r-- 1 root root 40468077 May 13 09:40 /var/log/nginx.log.2017.05.13

在脚本的结果中我有:

bash test.sh
other files is exists
only one file is exists

哪里有错误。我重复。如果我只有一个带有当前日期的 nging.log,我想得到“只有一个文件存在”。如果我有更多 nginx.log.* 文件,我想收到消息“其他文件存在”。

最佳答案

for i in `ls "$name"*`; 

如果与该 glob 匹配的(任何)条目是目录,这也会列出它们的内容。如果它们不是,或者您不想列出它们的内容,只需使用 for i in "$name"* ; —— 无论如何,扩展 glob 的是 shell,而 ls 在这里没有做任何有用的事情。

您可以在 Bash 中计算与 glob 匹配的文件数量:

shopt -s nullglob
files=( "$name"* )
count=${#files[@]} # take the count
for f in "${files[@]}" ; do # or loop over them
...

关于linux - 检查bash上是否只有一个文件存在当前数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43950288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com