使用完整路径和文件名bash的通配符检查文件是否存在

Check if file exists using full paths and wildcard for filename bash

我需要能够使用bash检查文件目录中是否存在具有特定字符串的文件名。在本例中,我想检查文件名中是否有包含日期20171101的文件:

1
[ -e"/path/to/data/dir/*20171101*" ] && echo true || echo false

当我在目录中使用find *20171101*时,它会返回包含该日期的文件。但是,当我在完整路径上尝试相同的方法时,会得到一个binary operator expected错误。这是给-e和find的。

我需要的是能够使用通配符和完整路径搜索文件,并在满足条件时返回真/假。可以有多个文件,但如果找到至少一个符合条件的文件,则应返回true。此外,我需要在一行中执行它。谢谢!


1
[ -n"$(find /path/to/data/dir -name '*20171101*' | head -1)" ] && ...

引用对于防止shell在当前目录中展开它很重要。你需要使用test -n,因为只有find不会告诉你是否找到匹配的。head -1在找到匹配项时停止,因此您不会浪费时间寻找更多匹配项。