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
これらのスクリプトは、カレントディレクトリの全てのファイルをループし、各ファイルに対して以下の操作を行います
test -f
コマンドを使用して、アイテムがファイルであることを確認します(ディレクトリは除外されます)。string match
コマンドを使用して、ファイル名が既にタイムスタンプを含んでいるかどうかを確認します。- タイムスタンプが含まれていない場合、
date
コマンドを使用してファイルのタイムスタンプを生成します。 mv
コマンドを使用して、生成されたタイムスタンプとアンダースコアをファイル名の先頭に追加し、ファイル名を変更します。
このスクリプトは、ファイルの整理と管理を容易にし、ファイルのバージョン管理を簡単に行えるようにします。