linux - 在Linux中使用正则表达式重命名文件

标签 linux

您好,我需要更改文件夹中的这些文件名:

dingo__AAA311P02_2845__L7_ACTTGA_L007_R1_001.fastq.gz
lala_bros__AAA000M11_3289__L2_ACTGAT_L002_R2_001.fastq.gz
nice__AAA827M10_2860__L7_ACTGAT_L007_R2_001.fastq.gz

我需要保留 AAA*****(例如 AAA255P02),并保留 R1 或 R2 以及扩展名 fastq.gz

所以理想情况下我想得到这些:
AAA311P02_R1.fastq.gz AAA000M11_R2.fastq.gz AAA827M10_R2.fastq.gz

我尝试使用 rename 's/^.*\(AAA[1-9][1-9][1-9][A-Z][1-9][1-9]\).*$/\$1/g' *.fastq.gz

最佳答案

\(...\) 搜索括号但不捕获其内容。

我看到需要捕获三个 block ,因此我提出以下建议:

rename 's/^.*(AAA.{6}).*(_R.).*(\.fastq.gz)/$1$2$3/' *.fastq.gz

第一个 block :AAA 后跟六个字符。

第二个 block :_R 后跟一个字符。

第三 block :扩展名.fastq.gz

关于linux - 在Linux中使用正则表达式重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30007226/

相关文章:

c++ - 无法更改 CMake 中的默认链接器

c - 使用 NCurses 获取 CTRL 字符

python - 创建将在指定 python 虚拟环境中运行的 .py 文件,同时还通过指定路径导入其他文件

在 chroot 模式下从二进制调用脚本,不起作用

linux - 如何在 python 中将 '>' 作为参数传递给终端

python - Crontab 在树莓派上启动 python 脚本导致导入错误

c - 在 X11 上激活一个窗口,为什么我会丢失标题栏?

regex - 如何验证字符串是否也在 shell 脚本中以空格开头和结尾?

python - 如何从核心转储分析内存使用情况?

mysql - 从 512mb 编译 mysql 时未编译 *item_geofunc.cc.o*