如何使用前缀 ID 重命名多个文件?

如何使用前缀 ID 重命名多个文件?

我有 103 个目录。这些目录被命名为PJA_XXX,其中XXX是从 71 到 174 的数字。在每个PJA_XXX文件夹中,我在下一个路径下都有一个文件:PJA_XXX/results/variants/variants.vcf

我想重命名variants.vcf文件并添加包含该文件的目录的前缀PJA_XXX。因此预期结果是PJA_XXX_variants.vcf

我想我可以用 shell 循环来完成此操作,但我不知道如何获取文件夹的名称PJA_XXX以便重命名文件。

答案1

您可以使用循环变量,并在命令中引用它。${loop_variable_name}

使用...

for directory_name in PJA_*; do
    echo "Processing ${directory_name}."
    mv "${directory_name}/results/variants/variants.vcf" "${directory_name}/results/variants/${directory_name}_variants.vcf"
done

...修改文件结构,如...

PJA_001
└── results
    └── variants
        └── variants.vcf
PJA_002
└── results
    └── variants
        └── variants.vcf
PJA_003
└── results
    └── variants
        └── variants.vcf
PJA_004
└── results
    └── variants
        └── variants.vcf
PJA_005
└── results
    └── variants
        └── variants.vcf

...进入这样的文件结构...

PJA_001
└── results
    └── variants
        └── PJA_001_variants.vcf
PJA_002
└── results
    └── variants
        └── PJA_002_variants.vcf
PJA_003
└── results
    └── variants
        └── PJA_003_variants.vcf
PJA_004
└── results
    └── variants
        └── PJA_004_variants.vcf
PJA_005
└── results
    └── variants
        └── PJA_005_variants.vcf

相关内容