Linux系统使用tail命令时如何忽略子目录 避免读取目录报错
解决方案
方法1:使用tail自带跳过目录参数(适配Ubuntu 20.04+版本)
Ubuntu默认搭载的GNU tail在8.32及以上版本新增了--skip-directories参数,直接添加到原有命令中即可自动忽略所有目录类参数,不会输出目录读取报错,原有输出逻辑保持不变:
tail --skip-directories /path/to/directory/*/*
方法2:全版本通用兼容方案
如果你的系统版本较旧不支持上述参数,可以用find命令筛选出指定层级的普通文件后再传递给tail处理,和你原有的匹配范围完全一致:
find /path/to/directory/*/* -maxdepth 0 -type f -exec tail {} +
参数说明:
-maxdepth 0:限制find仅处理你指定的/path/to/directory/*/*层级的目标,不会递归遍历更深的子目录-type f:仅筛选普通文件,自动过滤目录-exec tail {} +:将筛选出的所有文件批量传给tail执行,和直接执行tail的输出效果完全相同
补充:仅需屏蔽报错的最简方案
如果你不需要主动跳过目录处理,只是不想看到错误信息,可以直接丢弃标准错误输出:
tail /path/to/directory/*/* 2>/dev/null
内容的提问来源于stack exchange,提问作者Immortal
相关产品推荐
相关产品推荐

