当前位置:首页>Linux>linux整理seurat读取文件

linux整理seurat读取文件

  • 2026-10-11 08:36:24
linux整理seurat读取文件

linux整理seurat读取文件

我给你逐行、逐函数、逐符号把这段 Linux 脚本讲得清清楚楚,完全零基础也能听懂,你以后自己改脚本也能用。

完整脚本(对照看)

# 1. 创建样本名称列表(自动识别所有样本)
samples=$(ls *.gz | cut -d'_' -f1-3 | sort | uniq)

# 2. 为每个样本创建文件夹 + 重命名三文件(Seurat标准格式)
for s in$samples; do
mkdir -p "$s"
mv"${s}_barcodes.tsv.gz""${s}/barcodes.tsv.gz" 2>/dev/null
mv"${s}_features.tsv.gz""${s}/features.tsv.gz" 2>/dev/null
mv"${s}_matrix.mtx.gz""${s}/matrix.mtx.gz" 2>/dev/null
done

# 3. 删除无用压缩包
rm -f GSE222703_RAW.tar

# 4. 查看整理结果
echo -e "\n==== 整理完成!当前目录结构 ===="
ls -la

逐行详细讲解(最核心部分)

1. 第一行:提取所有样本名

samples=$(ls *.gz | cut -d'_' -f1-3 | sort | uniq)

拆解每个命令

  1. 1. ls *.gz
    • • 列出当前目录下所有 .gz 结尾的文件
    • • 例子:GSM6929206_p022_Tumoral_barcodes.tsv.gz
  2. 2. cut -d'_' -f1-3
    • • cut:切割字符串,按分隔符拆分文件名
    • • -d'_':用下划线 _ 当分隔符
    • • f1-3:只保留第1~3段
    • • 效果:
   GSM6929206_p022_Tumoral_barcodes.tsv.gz
   → 切割成:GSM6929206  p022  Tumoral  barcodes.tsv.gz
   → 保留前3段:GSM6929206_p022_Tumoral
  • • 这一步就是提取纯样本名!
  1. 3. sort | uniq
    • • sort:排序
    • • uniq:去重(每个样本只保留1次)
    • • 因为每个样本有 3 个文件(barcode/feature/matrix),会重复 3 次,去重后得到唯一样本列表
  2. 4. samples=$(...)
    • • 把上面得到的所有样本名存到变量 samples 里
    • • 变量内容:
   GSM6929206_p022_Tumoral
   GSM6929207_p022_Juxta
   GSM6929208_p027_Tumoral
 ...

2. 循环处理每一个样本(最关键)

for s in$samples; do
done
  • • for s in $samples
    • • 依次把每一个样本名赋值给变量 s
    • • 第一次循环:s=GSM6929206_p022_Tumoral
    • • 第二次循环:s=GSM6929207_p022_Juxta
    • • 自动遍历所有样本

3. 创建样本文件夹

mkdir -p "$s"
  • • mkdir:创建文件夹
  • • -p:如果文件夹已存在,不报错(安全)
  • • "$s":用当前样本名当文件夹名
  • • 效果:
  mkdir GSM6929206_p022_Tumoral

4. 移动 + 重命名文件(适配 Seurat!)

mv"${s}_barcodes.tsv.gz""${s}/barcodes.tsv.gz" 2>/dev/null

重点讲解

  1. 1. mv = move,移动 + 重命名
  2. 2. ${s}_xxx
    • • 把变量 s 和后缀拼接
    • • 例子:
   s=GSM6929206_p022_Tumoral
   → ${s}_barcodes.tsv.gz
   → GSM6929206_p022_Tumoral_barcodes.tsv.gz
  1. 3. 目标路径
   ${s}/barcodes.tsv.gz
  • • 放进对应样本文件夹
  • • 重命名为标准名:barcodes.tsv.gz
  • • Seurat 必须要这个固定名字!
  1. 4. 2>/dev/null
    • • 忽略错误信息(比如文件不存在时不报错)
    • • 让脚本更干净、不中断

5. 删除无用压缩包

rm -f GSE222703_RAW.tar
  • • rm:删除
  • • -f:强制删除,不提示、不报错

6. 输出提示 + 展示结果

echo -e "\n==== 整理完成!===="
ls -la
  • • echo:打印文字
  • • ls -la:显示目录结构,让你看到整理好的文件夹

用一句话总结整个脚本逻辑

自动识别所有样本 → 给每个样本建独立文件夹 → 把三个测序文件移动进去并重命名为 Seurat 能识别的标准名称


你能学到的通用 Linux 技能

  1. 1. cut 按分隔符切字符串
  2. 2. for 循环 批量处理文件
  3. 3. mv 移动+重命名
  4. 4. 变量 $s 动态使用文件名
  5. 5. 2>/dev/null 屏蔽错误

总结(最核心 3 个函数)

  1. 1. cut -d'_' -f1-3 → 提取样本名
  2. 2. for s in $samples → 批量循环处理每个样本
  3. 3. mv 原文件 目标文件夹/标准名 → 改成 Seurat 可读格式
参考自:西柚云超算服务器使用教程

👉 福利链接(复制到浏览器打开):
https://dayu.xiyoucloud.net/dayu/api/v1/anonymous/affiliate/ddssxsx

注意:必须通过以上连接进行服务器试用或购买,购买请输入优惠码:ddssxsx
当场立减200元!!!

📖 详细使用教程:

https://aomoow1hlm.feishu.cn/wiki/wikcnfjsymUiPf6ZEJmAZk8BYGe#Wy6kdeoyuoMqaox66k2csws1ngh

最新文章

随机文章