MENU

Fishスクリプトでファイル名に日付時刻を追加する

Fishシェルは、その美しいシンタックスと強力な機能で知られています。この記事では、Fishスクリプトを使用してカレントディレクトリの各ファイル名にタイムスタンプ(ここでは日付と時刻の文字列)を追加する方法を紹介します。このスクリプトは、既にタイムスタンプが付いているファイルは無視するので、複数回実行しても安全です。また、ディレクトリは対象外です。

以下に、タイムスタンプを追加するためのスクリプトを示します。

ワンライナースクリプト:

for file in *; if test -f $file; and not string match -r "^[0-9]{14}_" $file > /dev/null; set timestamp (date -r $file +"%Y%m%d%H%M%S"); mv $file "$timestamp"_"$file"; end; end

分割バージョン:

for file in *
    if test -f $file; and not string match -r "^[0-9]{14}_" $file > /dev/null
        set timestamp (date -r $file +"%Y%m%d%H%M%S")
        mv $file "$timestamp"_"$file"
    end
end

bashバージョン:

for file in *; do
    if [[ -f $file ]] && [[ ! $file =~ ^[0-9]{14}_ ]]; then
        timestamp=$(date -r "$file" +"%Y%m%d%H%M%S")
        mv "$file" "${timestamp}_$file"
    fi
done

これらのスクリプトは、カレントディレクトリの全てのファイルをループし、各ファイルに対して以下の操作を行います

  1. test -fコマンドを使用して、アイテムがファイルであることを確認します(ディレクトリは除外されます)。
  2. string matchコマンドを使用して、ファイル名が既にタイムスタンプを含んでいるかどうかを確認します。
  3. タイムスタンプが含まれていない場合、dateコマンドを使用してファイルのタイムスタンプを生成します。
  4. mvコマンドを使用して、生成されたタイムスタンプとアンダースコアをファイル名の先頭に追加し、ファイル名を変更します。

このスクリプトは、ファイルの整理と管理を容易にし、ファイルのバージョン管理を簡単に行えるようにします。

目次