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

使用find+grep提取文件名前8字符输出至txt失败,原因何在?

问题原因与解决方法

哦,我懂你为啥遇到这个问题了——你对grep的用法理解偏了!

原命令为啥不生效?

你写的grep "^........"里,每个.代表任意单个字符,^是锚定行首位置。这个表达式的作用是筛选出那些行首至少有8个字符的完整行,而不是把文件名截断到前8个字符。它只会把长度不足8的行过滤掉,剩下的完整文件名(含路径)都会原封不动输出,所以你看到的还是完整内容。

正确的实现方式

这里给你几种靠谱的方法,按需选择:

方法1:用cut提取字符(最直观)

cut命令专门用来截取文本片段,-c1-8表示提取每行的第1到第8个字符:

find . -type f -print | cut -c1-8 > test.txt

方法2:直接用find的-printf(更高效,无需管道)

find自带的-printf选项可以直接格式化输出,不用额外启动其他进程:

  • 如果要提取完整路径的前8个字符:
    find . -type f -printf "%.8p\n" > test.txt
    
  • 如果只想提取**文件名(不含路径)**的前8个字符:
    find . -type f -printf "%.8f\n" > test.txt
    

(说明:%p代表文件的完整路径,%f代表仅文件名,%.8表示取前8个字符)

方法3:用sed做替换截取

利用sed的正则替换功能,捕获行首8个字符并替换整行:

find . -type f -print | sed 's/^\(.\{8\}\).*/\1/' > test.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:31:58