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]
コメントを追加