2016-06-22 23 views
0

フォルダ名を使用してサブディレクトリ内のファイルの名前を変更します。私のファイルは、この形式のようフォルダ名を使用してファイル名を変更しますが、数字は同じにしてください

fastqjoin 
    un1 
     fasta 
     fastq 
    un2 
     fasta 
     fastq 

あると私は、このスクリプトは、フォルダ名を使用してファイル名を変更することができたが、私はそれように正規表現を追加したい

foldername 
    un1 
     fasta 
     fastq 
    un2 
     fasta 
     fastq 

にそれを変更したいです私はun[0-9].fast/D, un/d.fast/Dでスクリプトを交換しようとしているが、それらのどれも動作しない

for subdir in *; do mv $subdir/fastqjoin.un1.fasta $subdir/$subdir.un1.fasta; done; 

1つのスクリプト内のすべてのファイルを変更することができます。たとえば、次のように

f`or subdir in *; do mv $subdir/fastqjoin.un[0-9].fast/D $subdir/$subdir.un[0-9].fast/D; done;` 
+0

は私たちにあなたがファイルを持っているあなたのフォルダ構造を表示します。 –

+0

フォルダ構造はディレクトリ/サブディレクトリ/ファイルで、私の端末はディレクトリです。 – kelvinfrog

+0

'fastqjoin'フォルダの名前を' foldername'に変更したいと思うようです。 – 4castle

答えて

2

利用${variable#fastqjoin}変数の先頭からfastqjoinを除去するための、および他のループはファイルを反復処理するために:

for subdir in *; do 
    for pth in $subdir/*; do 
     file=`basename $pth`; 
     mv $pth $subdir/$subdir${file#fastqjoin}; 
    done; 
done 
+0

それは動作します!ありがとう。 – kelvinfrog

関連する問題