Linux中使用until调用find找到文件后如何省略输出匹配结果
解决方案
find命令默认会将匹配到的文件路径打印到标准输出,你只需要将这部分输出重定向到空设备/dev/null丢弃即可,该操作不会影响until对命令退出状态的判断。
修改后的代码
版本1:仅隐藏找到文件时的输出,保留找不到文件的错误提示
until find "$filename" > /dev/null do echo "Please re-enter text file name:" read filename done
版本2:完全隐藏find命令的所有输出(包括错误提示)
until find "$filename" > /dev/null 2>&1 do echo "Please re-enter text file name:" read filename done
补充说明
- 代码中给
$filename加上双引号是为了兼容文件名包含空格、特殊字符的场景,避免执行报错。 - 如果你只是需要判断普通文件是否存在,不需要用到
find的复杂查找能力,更简单的写法是直接用系统自带的文件判断语法:
这种写法执行效率更高,也不需要额外处理输出重定向。until [ -f "$filename" ] do echo "Please re-enter text file name:" read filename done
内容的提问来源于stack exchange,提问作者Chew
相关产品推荐
相关产品推荐

