kun*_*nal 2 command-line bash scripts
我需要检查文件夹是否为空,并根据输出我需要运行一些其他命令。我正在使用 Ubuntu 18.04.5 LTS。
我的 bash 脚本:
if [ "$(ls -A /mnt/mamdrive/"As Metadata"/)" ] || ["$(ls -A /mnt/mamdrive/"As Video"/)" ]; then
echo "copy file"
else
echo "dont copy"
fi
Run Code Online (Sandbox Code Playgroud)
这种情况有时有效,但有时不起作用,而且很难重现。有没有其他方法可以检查目录是否为空并相应地执行一些操作?
ste*_*ver 13
我建议一些不依赖于字符串输出的东西ls- 例如,测试是否有 glob 扩展的任何结果:
#!/bin/bash
shopt -s nullglob # don't return literal glob if matching fails
shopt -s dotglob # make * match "almost all" like ls -A
set -- /mnt/mamdrive/"As Metadata"/*
if (( $# > 0 )); then
echo "not empty"
else
echo "empty"
fi
Run Code Online (Sandbox Code Playgroud)
如果你想测试两个目录是否都是空的,你可以简单地 glob 两个:
set -- /mnt/mamdrive/"As Metadata"/* /mnt/mamdrive/"As Video"/*
Run Code Online (Sandbox Code Playgroud)
最简单的方法是ls -A在这样的if语句中使用:
path=$(ls -A '/whatever/sub directory/more spaces')
if [[ ! -z "$path" ]]; then
echo "Directory is NOT empty!"
else
echo "Directory is empty!"
fi
Run Code Online (Sandbox Code Playgroud)