MOV001.mpg、MOV002.mpg などの名前を持つファイルがたくさんあります。それらはすべて日時が異なります。
2012 08 05 13 45 33 MOV001.mpg、2012 09 02 23 45 07 MOV002.mpg などの名前に変更するにはどうすればよいでしょうか?
つまり、名前を変更したファイルから日付と時刻の情報を抽出するにはどうすればよいでしょうか?
よろしくお願いします。
答え1
未テスト:
for f in *.mpg; do
mv "$f" "$(stat -f "%m" -t "%Y %m %d %H %M %S" "$f") $f"
done
stat -f "%m"
ファイルの最終更新日を生成し、-t "%Y %m %d %H %M %S"
要件に応じて日付をフォーマットする必要があります。
答え2
/path/to/file.ext
元の質問では、結果のファイルもファイル拡張子で終わるように指定されています。これを移植可能な方法で実行するには、bash で組み込みの から拡張子を取得し${f##*.}
、次の 1 行のコードを作成します。
for f in *.FOO; do mv "$f" "$( /usr/bin/stat -f "%Sm" -t "%Y%m%d_%H%M%S" ).${f##*.}" ; done
そしてコードブロック
for f in *.FOO ; do
mv "$f" "$( /usr/bin/stat -f "%Sm" -t "%Y%m%d_%H%M%S" ).${f##*.}"
done
したがって、FOO を変更すると (例: *.mpg から *.png へ)、出力ファイル名は正常になります。