Bash
當文件名具有非數字前綴時,以數字方式對文件名進行排序
我有以下格式的文件:
x1 x2 ... x10 x11 ... x101 ...
我想重命名這些文件,所以它們都具有相同的名稱長度:
x001 x002 ... x010 ...
我可以對沒有非數字前綴的文件執行此操作(僅使用
sort -n
後跟 awhile read x;
),但是當它不在文件名的開頭時,排序無法辨識數字值。
您可以嘗試使用eg 的
v
(version) 選項對文件進行排序。或者您可以使用數字排序 with作為分隔符:ls``ls -1v``x``ls | sort -n -t 'x' +1
但是您不必對文件進行排序以重命名它們。您可以只查看文件名的長度,並在必要時用零填充。這是一個執行此操作的小腳本:
prefix=x maxLength=4 for file in ${prefix}* do if [ ${#file} -lt $maxLength ] then newFile=$file while [ ${#newFile} -lt $maxLength ] do newFile=${newFile/$prefix/${prefix}0} done mv $file $newFile fi done