我想使用文件夹名重命名子目录中的文件。我的文件是这样的格式
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;`
最佳答案
使用${variable#fastqjoin}
从变量开头删除fastqjoin
,并使用另一个循环遍历文件:
for subdir in *; do
for pth in $subdir/*; do
file=`basename $pth`;
mv $pth $subdir/$subdir${file#fastqjoin};
done;
done
关于regex - 使用文件夹名称重命名文件名,但保持数字相同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37971325/