首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从我的文件标题中移除变量模式

从我的文件标题中移除变量模式
EN

Ask Ubuntu用户
提问于 2022-05-05 08:44:18
回答 2查看 1.4K关注 0票数 2

当我最终收到NGS测序的数据时,有几天我使用Ubuntu来分析它们。然而,我缺乏shell编码的基本知识,我感到被这种全新的语言所淹没。

我成功地遵循了管道,但仍然存在一些初学者的问题。

具体来说,我有一个文件夹,其中有96个文件,我想重命名。它们通常以下列形式存在:

代码语言:javascript
复制
AD18_S1_R2_cat_trimmed.fastq.gz
AD19_S26_R2_cat_trimmed.fastq.gz

基本上,我试图删除示例ID,例如_S1_S26。我最近发现了星号,并成功地将它们用于以前的函数。但我很难想象如何在这里使用它们。我认为会起作用的是提取_S_R之间的表达式并删除它,同时保留R

如果示例ID始终具有相同的长度,我将使用[5-7]从名称中删除字符。但对某些样本不起作用。

我想了解如何做到这一点,而不仅仅是得到答案。因此,请您解释一下如何进行此更改,如果您同意共享解决方案,您的代码意味着什么?

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2022-05-05 09:08:21

mmv是一个很好的工具。默认情况下不安装它,因此您可以使用以下方法安装它:

代码语言:javascript
复制
sudo apt install mmv

然后,只需在保存文件的目录中运行以下命令:

代码语言:javascript
复制
mmv -n '*_*_R2_cat_trimmed.fastq.gz' '#1_R2_cat_trimmed.fastq.gz'

一种简化的解释:

  • -n (No)被使用,这样您就可以在未应用更改的情况下预览它们。如果您对输出满意,请在不使用-n标志的情况下重新运行该命令。
  • 您希望删除第一个和第二个_之间的所有内容,因此mmv ('*_*_R2_cat_trimmed.fastq.gz')的第一个参数是文件的通用表达式。星星是一个通配符,意思是“匹配任何字符串”。因此,我们将任何字符串匹配到第一个_,然后匹配第一个和第二个_之间的任何字符串,然后将文件名的其余部分保持原样。
  • 第二个参数('#1_R2_cat_trimmed.fastq.gz')基本上是“使用第一个匹配来重命名”(#1),其余的只是我们保留的字符串的一部分。因为我们没有使用第二个匹配(#2),所以我们有效地删除了它。

默认情况下,mmv应用背景中的更改。如果您希望在进行更改时看到这些更改,可以使用-v (详细)标志。

有关mmv的更多信息,您可以通过在终端中运行man mmv来查阅其手册。

注意:在运行任何命令之前,请始终在文件的一部分中测试它,以确保它按您的要求工作,并且不会丢失任何文件。保持原始文件的备份也是件好事。

票数 5
EN

Ask Ubuntu用户

发布于 2022-05-06 11:03:41

一般来说,当使用正则表达式时,“少即多”。我的意思是,避免试图匹配整个字符串,而是专注于匹配您安装的位。在这种情况下,字母S后面跟着一个或多个数字。这可以用Perl兼容的正则表达式( rename工具使用的语法)表示为S\d+

考虑到这一点,下面是一个更简单的rename命令:

代码语言:javascript
复制
$ rename -n 's/_S\d+//' *fastq.gz
AD18_S1_R2_cat_trimmed.fastq.gz -> AD18_R2_cat_trimmed.fastq.gz
AD19_S26_R2_cat_trimmed.fastq.gz -> AD19_R2_cat_trimmed.fastq.gz

该命令将替换_的第一个实例,后面跟着S,然后将一个或多个数字(\d+)替换为空,从而有效地删除它。-n告诉rename不要重命名任何东西,而只是打印它要做的事情。一旦您确认这做了您想做的事情,就移除-n,使命令实际上重命名文件。

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1406749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档