我有 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