私は現在、複数のファイル名を同時に変更するためのbash正規表現を取得しようとしています。ここではファイル名は次のとおりです。bashでのサブストリングの削除
a_001_D_xy_S37_L003_R1_001.txt
a_001_D_xy_S37_L003_R2_001.txt
a_002_D_xy_S37_L006_R1_001.txt
a_002_D_xy_S37_L006_R2_001.txt
a_003_D_xy_S23_L003_R1_001.txt
a_003_D_xy_S23_L003_R2_001.txt
私は、結果としてこれをしたい:
a_002_D_xy_R1.txt
a_002_D_xy_R2.txt
...
は、私が唯一の終わりに001.txt *を有するものを変更したいです。まず、_S .._ L00を削除します。ファイル名には001、最後には001となります。私はこの手順を2つに分割しました:
for file in *001.txt;
do
echo ${file#_S.._L..6}
done
このループはすでに機能しません。第二の代替として、私が試した:
for file in *001.fastq.gz;
do
echo ${file/_S.._L00./}
done
が、ファイル名は再び変更されません。 (私は結果を見るためにここでエコーを使用しています。動作すればmv ${file} ${regularexpression}
と置き換えます) 助けてくれてありがとう!
期待される出力のように、文字列 'a_002_D_tR_R1'にどうやって到着しますか? – Inian
'$ {file#...'と '$ {file/...'は**正規表現ではありません**。 –
https://stackoverflow.com/questions/7450818/rename-all-files-in-directory-from-filename-h-to-filename-halfの可能な複製 – tripleee