You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何用现有工具过滤管道输入中的有效目录?

解决方案:用系统预装工具筛选现存目录

这好办!完全不用自己写脚本,用Linux自带的xargs配合基础工具就能轻松实现需求。我给你两个实用的方案:

方案1:用xargs+sh做目录判断

直接通过子shell执行目录检查逻辑,逐个验证每个条目:

echo dir1 dir2 file.txt somethingThatDoesNotExist | xargs -n1 sh -c 'if [ -d "$1" ]; then echo "$1"; fi' _

命令细节解释:

  • xargs -n1:把输入的每个空格分隔条目单独传给后续命令,一次处理一个
  • sh -c '...':启动子shell执行判断逻辑
  • [ -d "$1" ]:检查传入的参数(也就是每个待验证的条目)是否为现存目录
  • _:作为sh -c的第一个参数(对应$0)占位,让实际的目录/文件名成为$1

方案2:用xargs+find(更简洁)

利用find本身会自动忽略不存在路径的特性,直接筛选目录类型条目:

echo dir1 dir2 file.txt somethingThatDoesNotExist | xargs -I{} find {} -maxdepth 0 -type d

命令细节解释:

  • xargs -I{}:把每个输入条目替换为{},传递给find命令
  • -maxdepth 0:只检查条目本身,不递归查找子目录
  • -type d:仅匹配目录类型的条目,不存在的路径会被find直接跳过

执行任意一个命令后,都会输出你期望的结果:dir1 dir2。

内容的提问来源于stack exchange,提问作者Ludwig Magnusson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:36:37