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

如何用xargs将ls输出传入cat列文件名及给cat加文件名分隔

嘿,这两个bash小问题我太熟了,直接给你说最实用的解法:

问题1:用xargs把ls的输出传给cat实现列出文件名

其实单纯列文件名的话,ls本身就足够了,不过既然你指定要结合xargs和cat,分两种场景说:

  • 如果只是想让cat原样输出ls列出的文件名(效果和ls完全一致):
    直接用 ls | cat 就行,cat会读取标准输入并原样打印。如果一定要加入xargs(虽然有点冗余),可以这么写:
    ls | xargs -I {} echo {} | cat
  • 如果你的真实需求是用cat显示这些文件的内容(这才是xargs+cat的常用场景):
    普通场景(文件名无空格/特殊字符)用:
    ls *.txt | xargs cat
    要是文件名带空格、引号这类特殊字符,稳妥写法是:
    ls -1 *.txt | xargs -d '\n' cat
    这里-1让ls每行输出一个文件名,-d '\n'让xargs以换行符作为分隔符,避免拆分带空格的文件名。
问题2:给每个txt文件内容前加带序号的文件名标识

要简短易记的命令,首推for循环写法,直观还能处理带空格的文件名:

i=0; for f in /你的目标目录/*.txt; do echo "file #$((++i))"; cat "$f"; done

把/你的目标目录/换成实际路径就行,当前目录的话直接写*.txt。

要是想更简洁,也可以用awk一行搞定:

ls -1 /你的目标目录/*.txt | awk '{printf "file #%d\n", NR; system("cat \"" $0 "\"")}'

awk会自动用NR维护序号,先打印标识,再调用cat输出文件内容,双引号包裹文件名能兼容空格场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:42:09