Linux
在文件名中以科學計數法書寫的更改編號
我要製作圖像文件的影片,但文件名包含科學計數法的數字,因此名稱的順序將不正確。
文件名採用以下格式:
ABC_1.000000E-01.png ~ ABC_1.100000E+01.png, DEF_1.000000E-01.png ~ DEF_1.100000E+01.png, GHI_1.000000E-01.png ~ GHI_1.100000E+01.png, . . .
如果我更改用於數字的數字元號,則順序再次不正確,因此我想將其更改如下。
ABC_001.png ~ ABC_110.png, DEF_001.png ~ DEF_110.png, GHI_001.png ~ GHI_110.png, . . .
如何在我的 Linux 系統上執行此操作?
也試試
ls -1 *.png | LC_ALL=C awk -F[._] '{TMP=$2 "." $3; printf "mv %s %s_%03d.%s\n", $0, $1, 10*TMP, $4}' mv ABC_1.000000E-01.png ABC_001.png mv ABC_1.100000E+01.png ABC_110.png mv DEF_1.000000E-01.png DEF_001.png mv DEF_1.100000E+01.png DEF_110.png mv GHI_1.000000E-01.png GHI_001.png mv GHI_1.100000E+01.png GHI_110.png
它用於
awk
隔離和轉換科學計數法中的數字,並將其十倍值輸出為填充零的整數。sh
例如,如果對結果感到滿意,請通過管道。
這是一個腳本,它將找到目前目錄中的每個 png 文件並相應地重命名它們。請注意,它不會覆蓋現有文件。
這是作品的預覽
./DEF_1.100000E+01.png - ./DEF_11.00.png ./DEF_1.000000E-01.png - ./DEF_0.10.png ./GHI_1.000000E-01.png - ./GHI_0.10.png ./ABC_1.100000E+01.png - ./ABC_11.00.png ./GHI_1.100000E+01.png - ./GHI_11.00.png ./ABC_1.000000E-01.png - ./ABC_0.10.png
劇本前
$ ls ABC_1.000000E-01.png DEF_1.000000E-01.png GHI_1.000000E-01.png script.sh ABC_1.100000E+01.png DEF_1.100000E+01.png GHI_1.100000E+01.png
腳本之後
$ ls ABC_0.10.png DEF_0.10.png GHI_0.10.png script.sh ABC_11.00.png DEF_11.00.png GHI_11.00.png
腳本
#!/bin/bash for file in $(find . -type f -name "*.png") do number=$(echo "${file}" | cut -d'_' -f 2) number=$(basename "${number}" .png) number=$(echo "${number}" | awk '{ printf("%.2f\n",$1) }') filename=$(echo "${file}" | cut -d'_' -f 1) mv -n "${file}" "${filename}_${number}.png" done