You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过终端批量重命名文件并提取压缩文件前10万行

批量文件处理解决方案

嘿,我来帮你搞定这两个批量操作的问题,都是新手友好的方案,不用纠结复杂的正则或者教程细节~

1. 一次性重命名多个文件

下面给你几种最常用的场景,选适合你的就行:

场景1:批量修改文件后缀

比如要把所有.txt文件改成.md,两种简单方法:

  • rename命令(基础正则,好理解):
    rename 's/\.txt$/.md/' *.txt
    
    解释:s/旧内容/新内容/是替换规则,\.txt$匹配文件名末尾的.txt,换成.md*.txt指定要处理的文件范围。
  • 用bash循环(更直观,不用记正则):
    for file in *.txt; do mv "$file" "${file%.txt}.md"; done
    
    解释:${file%.txt}会自动去掉文件名最后面的.txt后缀,再加上.md就是新文件名。

场景2:给所有文件加统一前缀

比如给所有.jpg文件加前缀vacation_

for file in *.jpg; do mv "$file" "vacation_$file"; done

场景3:替换文件名里的特定字符

比如把文件名里的空格换成下划线:

  • rename全局替换:
    rename 's/ /_/g' *
    
    解释:末尾的g表示全局替换(把所有空格都换掉,不是只换第一个)。
  • 用bash循环:
    for file in *\ *; do mv "$file" "${file// /_}"; done
    
    解释:${file// /_}表示把文件名里所有空格都换成下划线。

2. 批量提取.tagAlign.gz文件的前100,000行到未压缩文件

这个用bash循环+zcat(读取压缩文件内容)+head(取前N行)就能一步搞定:

for file in *.tagAlign.gz; do zcat "$file" | head -n 100000 > "${file%.tagAlign.gz}.tagAlign"; done

细节解释:

  • zcat "$file":直接读取当前压缩文件的内容,不用提前解压
  • head -n 100000:只保留文件的前100,000行
  • > "${file%.tagAlign.gz}.tagAlign":把结果输出到和原文件同名,但去掉.gz后缀的新文件里

小提醒: 先拿1个测试文件试试手,比如:

zcat test.tagAlign.gz | head -n 1000 > test.tagAlign

确认内容没问题后,再跑上面的批量命令,避免意外~

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

火山引擎 最新活动