修正時間に基づいてファイル番号を付ける

修正時間に基づいてファイル番号を付ける

順序を示すために、最初に2つの数字を追加して、生成時間に応じて名前を変更する必要があるファイルセットがあります。

たとえば、次のようなファイルがあります。

Filename         Creation time
api.c            00:15
helloworld.h     00:05
ubuntu.iso       00:10

名前を変更した後、ファイル名は次のようになります。

01_helloworld.h
02_ubuntu.iso
03_api.c

どうすればいいですか?

答え1

これはまたbashパイプの入口が少ないと仮定する。

ls -tr文書の印刷最も古い修正まず、他の人は創作時期についてコメントしました。

a=0, ls -tr | while read line; do printf "%s \'%s\' \'%03d_%s\'\n" mv "$line" $((a=a + 1)) "$line"; done|less

答え2

そしてzsh

( autoload zmv
set -- *(.Om)
pad=${#${#}}
zmv -n -Q '*(.Om)' '${(l:${pad}::0:)$((++i))}_$f' )

最初にファイル数を取得し(flagsを使用してゼロパディング長を計算できますl)、通常のファイルのみを選択して削除するglob修飾子を使用するには、zmvwithを使用してファイルの名前を変更します。-Q.Ommtime
-n試運転Switch)結果に満足したら。

関連情報