我想使用文件夹名重命名子目录中的文件。我的文件是这样的格式

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/

10-13 07:24