Linuxでファイル名に基づいて複数のディレクトリを作成し、ファイル名を変更するにはどうすればよいですか?

stack_learner

AllData以下のようなファイルを含むディレクトリがあります。

AllData
 |____ file_1to1000.track
 |____ file_1001to2000.track
 |____ file_2001to3000.track

ファイル名に基づいて、ファイル名を持つディレクトリを作成しました。

for file in *; do dir=$(echo $file | cut -d. -f1); mkdir -p $dir; mv $file $dir; done

そして、その中に別のディレクトリを作成してファイルを保持したかったのです。以下のようになります。

AllData
 |__ file_1to1000
          |___ cuffcompare
                   |____ file_1to1000.track

 |__ file_1001to2000
          |___ cuffcompare
                   |____ file_1001to2000.track

 |__ file_2001to3000
          |___ cuffcompare
                   |____ file_2001to3000.track

上記のようにファイルをディレクトリに移動した後、ファイル名を からfile_1to1000.track変更する必要がありますsoft.trackディレクトリ内のすべてのファイルは、元のファイル名から次のように変更する必要がありsoft.trackます。基本的には次のようになります。

AllData
 |__ file_1to1000
          |___ cuffcompare
                   |____ soft.track

 |__ file_1001to2000
          |___ cuffcompare
                   |____ soft.track

 |__ file_2001to3000
          |___ cuffcompare
                   |____ soft.track
α アスシュイン

小切手:

for file in ./*; do
    echo mkdir -p "${file%.*}"/cuffcompare/ && \
    echo mv "$file" "$_"soft.track
done

ライナーへ:

for file in ./*; do echo mkdir -p "${file%.*}"/cuffcompare/ && echo mv "$file" "$_"soft.track; done

注:echo予行演習の結果に満足したら、上記で削除します。


${file%.*}ファイル名から最も短い一致サフィックスを削除します。そのため、.trackここでファイル名の末尾から切り取ります。既知のパラメータ拡張

$_前のコマンドの最後の引数の代替です (シェルの特別なパラメータを参照)。に展開され"${file%.*}"/cuffcompare/ます。

そのためmkdir-p見つかったすべてのファイルについて、以下のディレクトリ構造を作成します (親ディレクトリが存在しない場合は、親ディレクトリを作成するために使用されます)。

└── file_2001to3000
    └── cuffcompare

次にmv、ファイルを移動して、次の名前の関連ディレクトリにsoft.tarck名前を変更します

└── file_2001to3000
    └── cuffcompare
        └── soft.track

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ