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

如何提取指定目录下所有.fq.gz文件的文件名与大小并写入txt?

解决方法

推荐方案:使用find命令(最可靠)

find命令可递归遍历目录,直接获取每个文件的名称与大小,彻底避免路径匹配问题:

find dir -type f -name "*.fq.gz" -printf "%f %s\n" > data.txt
  • dir:替换为你的根目录路径(即示例中的dir)
  • -type f:仅查找普通文件,排除目录项
  • -name "*.fq.gz":精准匹配所有后缀为.fq.gz的文件
  • -printf "%f %s\n":格式化输出,%f表示仅取文件名(不含路径),%s表示文件大小(单位:字节),\n实现换行
  • 最终结果会写入data.txt,格式完全符合需求

若需要保留文件的完整路径,只需把%f替换为%p:

find dir -type f -name "*.fq.gz" -printf "%p %s\n" > data.txt

备选方案:改进ls命令(适用于文件名无空格场景)

如果坚持使用ls,需处理路径与输出格式问题:

ls -lR dir | grep "\.fq.gz$" | awk '{print $9, $5}' > data.txt
  • ls -lR dir:递归列出dir下所有文件的详细信息(包含大小字段)
  • grep "\.fq.gz$":筛选出.fq.gz结尾的行
  • awk '{print $9, $5}':提取第9列(文件名)和第5列(文件大小)

⚠️ 注意:若文件名包含空格,awk会将文件名拆分为多列,导致输出错误,因此优先推荐find方案。

原命令报错原因

你之前用ls -R | grep "\.fq.gz"得到的文件名,多为子目录下的相对路径(如subfolder1/file1.fq.gz),但后续操作若在当前目录执行,系统会因找不到这些实际存于子目录的文件,报“文件不存在”错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:15:57