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

在LFTP的FTPS服务器中筛选含大写D的目录(保留列信息)

解决LFTP中筛选名称含大写D的目录且保留前三列的问题

这个问题我之前也碰到过,确实挺烦的——直接用grep 'D'会把所有带<DIR>标识的行都匹配出来,毕竟<DIR>本身就包含大写D。要保留前三列信息的同时,只筛选目录名称里含大写D的行,有两个实用的方法:

方法一:用awk精准匹配目录和名称

awk可以帮我们先筛选出目录行,再单独检查名称部分是否包含大写D,完美避开<DIR>里的D:

ls | awk '$3 == "<DIR>" {
    # 提取从第四个字段开始的目录名称(包含可能的空格)
    name_start = index($0, $4)
    dir_name = substr($0, name_start)
    # 检查名称里是否有大写D
    if (dir_name ~ /D/) print $0
}'

原理:

  1. $3 == "<DIR>":先过滤出所有目录行(第三列是<DIR>的行)
  2. 用index($0, $4)找到目录名称的起始位置(第四个字段开始就是目录名)
  3. 提取目录名称后,用正则检查是否包含大写D,符合条件就打印整行(保留所有列信息)

方法二:用grep限定D的出现位置

如果你的目录名称没有特殊字符,也可以用grep的正则直接限定D必须出现在<DIR>之后:

ls | grep '<DIR>.*D'

原理:

  • <DIR>.*D表示行里先出现<DIR>,之后任意位置出现大写D,这样就只会匹配目录行且名称里含D的内容,自动排除了<DIR>里的D(因为它在<DIR>内部,不是之后的内容)
  • 如果要更严格匹配(比如D必须是名称的一部分,不能是其他无关字符),可以用扩展正则:ls | grep -E '<DIR>\s+.+D',\s+匹配<DIR>后的空格,.+D确保D在名称区域

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:18:56