Bash

當文件名具有非數字前綴時,以數字方式對文件名進行排序

  • September 16, 2015

我有以下格式的文件:x1 x2 ... x10 x11 ... x101 ...

我想重命名這些文件,所以它們都具有相同的名稱長度:x001 x002 ... x010 ...

我可以對沒有非數字前綴的文件執行此操作(僅使用sort -n後跟 a while 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

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