Her*_*ère 2 command-line bash batch-rename
当我终于收到 NGS 测序数据时,我用 Ubuntu 分析了几天。然而,我缺乏 shell 编码的基础知识,我对这种全新的语言感到不知所措。
我设法遵循管道,但仍然存在初学者问题。
具体来说,我有一个包含 96 个文件的文件夹,我想重命名它们。它们通常具有以下形式:
AD18_S1_R2_cat_trimmed.fastq.gz
AD19_S26_R2_cat_trimmed.fastq.gz
Run Code Online (Sandbox Code Playgroud)
基本上,我试图删除示例 ID,例如_S1和_S26。我最近发现了星号,并成功地将它们用于以前的函数。但我在想象如何在这里使用它们时遇到了问题。_S我认为有效的方法是提取和之间的表达式并将_R其删除,同时保留R.
如果样本 ID 始终具有相同的长度,我会用来[5-7]从名称中删除字符。但它不适用于某些样本。
我想了解如何做到这一点,而不是得到答案。因此,您能解释一下如何进行此更改吗?如果您同意共享解决方案,您的代码意味着什么?
mmv是一个很好的工具。默认情况下不安装它,因此您可以使用以下命令安装它:
sudo apt install mmv
Run Code Online (Sandbox Code Playgroud)
然后只需在保存文件的目录中运行以下命令:
mmv -n '*_*_R2_cat_trimmed.fastq.gz' '#1_R2_cat_trimmed.fastq.gz'
Run Code Online (Sandbox Code Playgroud)
一个简单的解释:
-n使用(不执行),以便您可以预览更改而不应用它们。如果您对输出感到满意,请重新运行不带-n标志的命令。
您想要删除第一个和第二个之间的所有内容,因此( )_的第一个参数是文件的通用表达式。mmv'*_*_R2_cat_trimmed.fastq.gz'
星号是通配符,意思是“匹配任何字符串”。因此,我们匹配第一个之前的任何字符串_,然后匹配第一个和第二个之间的任何字符串_,然后将文件名的其余部分保留原样。
第二个参数 ( '#1_R2_cat_trimmed.fastq.gz') 基本上表示“使用第一个匹配项重命名” ( #1) ,其余部分只是我们保留原样的字符串部分。由于我们没有使用第二个匹配项 ( #2),因此我们有效地将其删除。
默认情况下,mmv在后台应用更改。如果您想查看正在进行的更改,可以使用-v(verbose) 标志。
有关 的更多信息mmv,您可以通过man mmv在终端中运行来查阅其联机帮助页。
注意:在运行任何命令之前,请务必在文件的一部分中对其进行测试,以确保它按您的需要工作并且不会丢失任何文件。始终保留原始文件的备份也很好。