Linux

如何重新排列和刪除文件名

  • July 1, 2021

我正在嘗試在 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中做到這一點?

我打算將隨機數重新排列到文件名的後面,然後一起刪除這些數字。但我被卡住了。

使用基於 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一旦你對它會做正確的事情感到滿意,就刪除它。

使用帶有 KSH 風格的擴展萬用字元的 bash shell:

$ 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在這裡,一旦您對它正在做正確的事情感到滿意,請刪除它。

引用自:https://unix.stackexchange.com/questions/656493