如何在bash中自动将两个文件重命名为不同的名称

如何在bash中自动将两个文件重命名为不同的名称,bash,loops,Bash,Loops,我有一个问题,我想知道如何在bash中自动执行此操作: 我有12个文件夹(0,1,2,3..11),每个文件夹包含如下所示的两个文件,例如,在文件夹1中,它包含: 4DNFI6E4RZ9H.fastq.gz 4DNFIIN1NES7.fastq.gz 文件夹中的所有文件都不具有相同的名称 我想创建一个脚本,可以循环到每个文件夹中,并根据文件夹的名称重命名文件,例如,对于文件夹1中的文件,我想将两个文件重命名为: 1_R1.fastq.gz 1_R2.fastq.gz 2_R1.fastq.

我有一个问题,我想知道如何在bash中自动执行此操作: 我有12个文件夹(0,1,2,3..11),每个文件夹包含如下所示的两个文件,例如,在文件夹1中,它包含:

4DNFI6E4RZ9H.fastq.gz
4DNFIIN1NES7.fastq.gz
文件夹中的所有文件都不具有相同的名称

我想创建一个脚本,可以循环到每个文件夹中,并根据文件夹的名称重命名文件,例如,对于文件夹1中的文件,我想将两个文件重命名为:

1_R1.fastq.gz 
1_R2.fastq.gz
2_R1.fastq.gz
2_R2.fastq.gz
...
对于文件夹2中的文件,我希望将这两个文件重命名为:

1_R1.fastq.gz 
1_R2.fastq.gz
2_R1.fastq.gz
2_R2.fastq.gz
...
那么怎么做呢?非常感谢

像这样:

#!/bin/bash

for dir in */; do
    c=0
    for file in $dir/*; do
        mv "$file" "${file%/}_R$((++c)).fastq.gz"
    done
done

ls *
像这样:

#!/bin/bash

for dir in */; do
    c=0
    for file in $dir/*; do
        mv "$file" "${file%/}_R$((++c)).fastq.gz"
    done
done

ls *