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

如何在shell脚本中获取指定文件夹下特定日期的纯文件名列表

解决方案

你之前的命令输出带路径的原因是:shell会先把带路径的通配符a/b/c/*2021-08-18*展开为带完整路径的文件名列表传递给ls,ls自然会输出完整路径。有多个简洁方案可以直接实现需求,不需要额外做复杂的裁剪处理:

方案1:子shell切换目录(最推荐,无额外依赖)

使用子shell执行cd操作,不会改变你当前的工作目录,输出直接就是不带路径的文件名:

(cd a/b/c && ls -1 *2021-08-18*) > filenames.txt

方案2:使用find命令指定输出格式

如果需要更灵活的筛选(比如同时过滤目录/隐藏文件),可以用find的格式化输出参数直接取文件名:

find a/b/c -type f -name "*2021-08-18*" -printf "%f\n" > filenames.txt

其中-type f表示只匹配普通文件,%f表示仅输出文件名本身。

方案3:对现有带路径的输出做轻量裁剪

如果不想调整原有的ls逻辑,可以用简单的命令裁剪掉路径前缀:

  • 用awk处理:
ls -1 a/b/c/*2021-08-18* | awk -F '/' '{print $NF}' > filenames.txt
  • 用basename批量处理:
ls -1 a/b/c/*2021-08-18* | xargs -n 1 basename > filenames.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:42:02