我需要能够使用bash检查文件目录中是否存在具有特定字符串的文件名。在此示例中,我想检查文件中是否包含日期20171101
的文件:
[ -e "/path/to/data/dir/*20171101*" ] && echo true || echo false
当我在目录中使用find *20171101*
时,它会返回包含该日期的文件。但是,当我在完整路径上尝试相同的方法时,我收到binary operator expected
错误。这是-e和find。
我需要的是能够在条件为的时候搜索文件使用通配符和完整路径和回显真/假满足。可以有多个文件,但如果找到满足条件的至少一个文件,它应该返回true。此外,我需要在1行执行它。谢谢!
答案 0 :(得分:1)
[ -n "$(find /path/to/data/dir -name '*20171101*' | head -1)" ] && ...
引用对于防止shell在当前目录中展开它很重要。您需要使用test -n
,因为单独find
无法告诉您是否找到了匹配项。 head -1
找到匹配后会停止,因此您不会浪费时间寻找更多内容。