Linux批量文件管理:rename/find/xargs/ln

442 字
2 分钟
Linux批量文件管理:rename/find/xargs/ln

生信项目跑到后面,文件数量爆炸。raw_data 里 200 个 fastq,results 里 50 个 BAM,logs 里一堆散落的日志。手动整理是不可能的。

本文提供常用的批量文件管理命令集,覆盖批量重命名、批量查找删除、批量压缩和批量软链接创建,每条可直接复制使用。

1. rename——批量改名#

Terminal window
# 把所有.fastq改成.fq
rename 's/\.fastq$/.fq/' *.fastq
# 去掉文件名中的_sample_前缀
rename 's/_sample_/_/' *_sample_*.fastq.gz
# 把所有空格改成下划线
rename 's/ /_/g' *
# 转小写
rename 'y/A-Z/a-z/' *

注意: Debian/Ubuntu的 rename 用的是 Perl 正则,CentOS 的用法不同(rename old new files)。不确定就用 file-rename

2. find——查找并操作#

Terminal window
# 找所有超过1GB的BAM文件
find . -name "*.bam" -size +1G
# 删除7天前的临时文件
find /tmp -name "*.tmp" -mtime +7 -delete
# 找空文件
find . -type f -empty
# 把所有.sh加执行权限
find . -name "*.sh" -exec chmod +x {} \;
# 找软链接(断了的)
find . -type l ! -exec test -e {} \; -print

3. xargs——批量执行#

Terminal window
# 并行gzip压缩(-P4=4线程)
find . -name "*.fastq" | xargs -P4 -I{} gzip {}
# 删除含ERROR的日志文件
grep -l "ERROR" *.log | xargs rm -f
# 统计所有fastq.gz总大小
find . -name "*.fastq.gz" | xargs du -ch | tail -1

4. 软链接管理#

Terminal window
# 统一引用基因组,不拷贝
ln -s /opt/refs/hg38.fa ./refs/
# 批量创建链接(参照组每个基因一个链接)
cat gene_list.txt | xargs -I{} ln -s /opt/refs/{}.fa ./genes/
# 查看链接指向
readlink -f hg38.fa

5. 实用组合#

Terminal window
# 批量统计行数
find ./results -name "*.txt" | xargs wc -l | sort -rn
# 批量检查文件完整性(gzip)
find . -name "*.gz" | xargs -P8 -I{} sh -c 'gzip -t {} || echo "CORRUPT: {}"'
# 按日期归档日志
tar -czf logs_$(date +%Y%m).tar.gz logs/

本文于 2025-09-01 实测。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Linux批量文件管理:rename/find/xargs/ln
https://fg.ink/posts/linux-batch-file-management/
作者
风观
发布于
2024-04-01
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
风观
风有来路,观有所思
分类
标签
站点统计
文章
50
分类
1
标签
29
总字数
61,837
运行时长
0
最后活动
0 天前

文章目录