我想使用文件夹名称重命名子目录中的文件。我的文件就像这种格式
fastqjoin
un1
fasta
fastq
un2
fasta
fastq
我希望将其更改为
foldername
un1
fasta
fastq
un2
fasta
fastq
我发现这个脚本可以使用文件夹名称更改文件名,但我想添加正则表达式,以便它可以更改一个脚本中的所有文件
for subdir in *; do mv $subdir/fastqjoin.un1.fasta $subdir/$subdir.un1.fasta; done;
我尝试用un[0-9].fast/D, un/d.fast/D
替换脚本,但没有一个能够正常工作。例如:
f`or subdir in *; do mv $subdir/fastqjoin.un[0-9].fast/D $subdir/$subdir.un[0-9].fast/D; done;`
答案 0 :(得分:2)
使用${variable#fastqjoin}
从变量的开头删除fastqjoin
,使用另一个循环来迭代文件:
for subdir in *; do
for pth in $subdir/*; do
file=`basename $pth`;
mv $pth $subdir/$subdir${file#fastqjoin};
done;
done