数字以外の接頭辞がある場合は、ファイル名を数字でソートします。

数字以外の接頭辞がある場合は、ファイル名を数字でソートします。

次の形式のファイルがあります。x1 x2 ... x10 x11 ... x101 ...

これらのファイルの名前をすべて同じ名前の長さにするように変更したいと思います。x001 x002 ... x010 ...

数字以外の接頭辞を持たないファイルに対してこれを行うことができますが(末尾のみを使用sort -n)、while read x;ファイル名で始まらないと、ソートは数値を認識しません。

ベストアンサー1

vたとえば、(version)オプションを使用してファイルを並べ替えることができます。あるいは、数値ソートを区切り文字として使用することもできます。 lsls -1vxls | 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

おすすめ記事