使用父文件夹的名称重命名子文件夹中的文件
Rename files in subfolder using name of parent folder
我有数百个 同名 的文件存在于主文件夹的多个子文件夹中。我想 重命名 它们。例如文件夹 1135_AS 包含数百个子文件夹(具有唯一名称),其结构如下:
1135_AS/Uod-1_6975/transcriptome/salmon/quant.sf
我想用唯一文件夹
的名称重命名quant.sf
例如:
1135_AS/Uod-1_6975/transcriptome/salmon/quant.sf
应转换为:
1135_AS/Uod-1_6975/transcriptome/salmon/Uod-1_6975_quant.sf
和
1135_AS/Urd-1_9901/transcriptome/salmon//quant.sf
1135_AS/Urd-1_9901/transcriptome/salmon//Urd-1_9901_quant.sf
# cd into the parent dir, which is common:
$ cd 1135_AS/
$ find . -type f -name quant.sf \
| awk -F/ '{s=substr([=10=],0,length([=10=])-length($NF))}{system("mv " [=10=]" "s"_"$NF)}'
- 使用
find
打印文件的完整路径。
s=substr([=13=],0,length([=13=])-length($NF))
打印除 之外的整个路径
quant.sf
或者最后一个字段$NF
使用system(cmd)
in awk
to mv
文件。
可以通过删除 system()
来查看脚本将要执行的操作...它将打印如下内容,
$ find . -type f -name quant.sf \
| awk -F/ '{s=substr([=11=],0,length([=11=])-length($NF))}{print "mv " [=11=]" "s"_"$NF}'
mv ./Uod-1_6975/transcriptome/salmon/quant.sf ./Uod-1_6975/transcriptome/salmon/Uod-1_6975_quant.sf
我有数百个 同名 的文件存在于主文件夹的多个子文件夹中。我想 重命名 它们。例如文件夹 1135_AS 包含数百个子文件夹(具有唯一名称),其结构如下:
1135_AS/Uod-1_6975/transcriptome/salmon/quant.sf
我想用唯一文件夹
的名称重命名quant.sf例如:
1135_AS/Uod-1_6975/transcriptome/salmon/quant.sf
应转换为:
1135_AS/Uod-1_6975/transcriptome/salmon/Uod-1_6975_quant.sf
和
1135_AS/Urd-1_9901/transcriptome/salmon//quant.sf
1135_AS/Urd-1_9901/transcriptome/salmon//Urd-1_9901_quant.sf
# cd into the parent dir, which is common:
$ cd 1135_AS/
$ find . -type f -name quant.sf \
| awk -F/ '{s=substr([=10=],0,length([=10=])-length($NF))}{system("mv " [=10=]" "s"_"$NF)}'
- 使用
find
打印文件的完整路径。 s=substr([=13=],0,length([=13=])-length($NF))
打印除 之外的整个路径
quant.sf
或者最后一个字段$NF
使用system(cmd)
inawk
to mv
文件。
可以通过删除 system()
来查看脚本将要执行的操作...它将打印如下内容,
$ find . -type f -name quant.sf \
| awk -F/ '{s=substr([=11=],0,length([=11=])-length($NF))}{print "mv " [=11=]" "s"_"$NF}'
mv ./Uod-1_6975/transcriptome/salmon/quant.sf ./Uod-1_6975/transcriptome/salmon/Uod-1_6975_quant.sf