ファイル名を並べ替えて削除する方法

ファイル名を並べ替えて削除する方法

cmd(Ubuntu)のファイル名から任意の数字を削除しようとしています。

私がしたいことは:

279796_3D AXL MPR_26438044_0001.dcm —> 279796_3D AXL MPR_0001.dcm

279796_3D AXL MPR_26438446_0011.dcm —> 279796_3D AXL MPR_0011.dcm

また、Pythonでこれを行う方法はありますか?

ファイル名の後にランダムな数字を並べ替えてから、すべて削除します。しかし、詰まっています。

ベストアンサー1

Perlベースのファイル名の変更を使用する(Ubuntuパッケージからrename):

$ rename -n 's/_\d+_/_/' *.dcm
rename(279796_3D AXL MPR_26438044_0001.dcm, 279796_3D AXL MPR_0001.dcm)
rename(279796_3D AXL MPR_26438446_0011.dcm, 279796_3D AXL MPR_0011.dcm)

使用mmv:

$ mmv -n '*_*_*_*.dcm' '#1_#2_#4.dcm'
279796_3D AXL MPR_26438044_0001.dcm -> 279796_3D AXL MPR_0001.dcm
279796_3D AXL MPR_26438446_0011.dcm -> 279796_3D AXL MPR_0011.dcm

-nそれが正しいことをすることを確信したら、取り除きなさい。

bashシェルとKSHスタイルの拡張ワイルドカードを使用します。

$ shopt -s extglob

$ for f in *.dcm; do echo mv -n -- "$f" "${f/_+([0-9])_/_}"; done
mv -n -- 279796_3D AXL MPR_26438044_0001.dcm 279796_3D AXL MPR_0001.dcm
mv -n -- 279796_3D AXL MPR_26438446_0011.dcm 279796_3D AXL MPR_0011.dcm    

ここでecho正しいことをしていると確信している場合は、削除してください。

おすすめ記事