如何检查当前日期是否只有一个文件。 我有一个脚本:
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/