#!/bin/sh
for f in *.png
do
echo mv -n "$f" "$(date +%Y%m%d-%H-%M-%S)_$f"
done
()で説明されているように、タイムスタンプを使用して複数のファイルの名前を変更したいのですが、上記のコードを実行するls -lt --full-time
と、名前は現在の日付/時刻または変更時刻を使用します。 yymmdd形式の年、月、日が必要です。
ベストアンサー1
シンボリックリンクが解決された後、ファイルの最後の修正時刻に対応する日付を報告する-r
GNUオプションを使用してください(例:this)。date
ls -Ll
#!/bin/sh -
for f in *.png
do
t=$(date -r "$f" +%Y%m%d-%H-%M-%S) &&
echo mv -n -- "$f" "${t}_$f"
done
または、組み込み関数を使用して任意のzsh
形式stat
で時間形式を指定します。
#! /bin/zsh -
zmodload zsh/stat || exit
for f (*.png(N))
stat -A t -F %Y%m%d-%H-%M-%S +mtime -- $f &&
print -r mv -n -- $f ${t}_$f
stat
GNUやBSDを含む一部のシステムでは、完全に異なるAPI(zshと互いに)を使用しても独自のコマンドを追加しました(後で1)。
exiftool
また、その属性に基づいてファイル名を変更することもできます。
exiftool -d %Y%m%d-%H-%M-%S '-FileName<${FileModifyDate}_${FileName}' -- *.png
これらすべてと一緒にファイルの最後の修正時間を確認してくださいls -lt --full-time
(これらのpngファイルの一部がシンボリックリンクの場合は追加のファイルが必要です)。-L
これはファイルの内容の作成時間と考えることができ、一般的に興味のある部分です。 Linuxのファイルにはいわゆる出生時間また〜として知られています作成時間これはファイルが生成された時間を反映します(ただし、コンテンツが生成された時間とほとんど関係ありません)。
ls
最新のカーネルとGNU libc(CentOSにはありません)がある最新ls --time=birth -Ll --full-time
バージョンのGNUstat
の場合は、APIを使用してstat -Lc %w
検索できますdate
。これを行うAPIは最近非常に複雑で、Linuxによって異なります。そしてそのタイムスタンプは一般的に役に立ちません。バラよりstat
exiftool
ファイルが作成されるとまたはLinuxカーネルにはまだファイル作成日を取得するためのインターフェースがありませんか?もっと学ぶ。
1 ただし、以前のバージョンのUnixにはコマンドがありましたstat
。何らかの理由で、Unix v6の研究ではこれ以上機能がないため、70年代半ばに消えたようです。