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

使用文件名bash的完整路径和通配符检查文件是否存在,bash,Bash,我需要能够使用bash检查文件目录中是否存在具有特定字符串的文件名。在本例中,我想检查是否有文件名中包含日期20171101的文件: [ -e "/path/to/data/dir/*20171101*" ] && echo true || echo false 当我在目录中使用find*20171101*时,它返回包含该日期的文件。然而,当我在完整路径上尝试相同的方法时,我得到了一个二进制运算符预期错误。这是for-e和find 我需要的是能够使用通配符和完整路径搜索文件,并

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

[ -e "/path/to/data/dir/*20171101*" ] && echo true || echo false
当我在目录中使用find*20171101*时,它返回包含该日期的文件。然而,当我在完整路径上尝试相同的方法时,我得到了一个二进制运算符预期错误。这是for-e和find

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

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


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

在不同的路径名和通配符上测试了它。工作起来很有魅力。谢谢@约翰,你能再解释一下-n测试吗?我无法用谷歌搜索更多的例子/解释。谢谢@如果字符串长度非零,ddss12测试-n aka[-n…]成功。在不同的路径名和通配符上测试它。工作起来很有魅力。谢谢@约翰,你能再解释一下-n测试吗?我无法用谷歌搜索更多的例子/解释。谢谢@如果字符串长度非零,ddss12测试-n aka[-n…]成功。
[ -n "$(find /path/to/data/dir -name '*20171101*' | head -1)" ] && ...