ランダムな名前のファイルで満たされたディレクトリがあります。時系列、つまりファイルの作成日に基づいて、「ファイル 1」「ファイル 2」などの名前に変更できるようにしたいと考えています。短い Python スクリプトを書くこともできましたが、それでは何も学べませんでした。これを解決できる巧妙な1行のコマンドがあるかどうか疑問に思っていました. 誰かが私を正しい方向に向けることができれば。
私はzshを使用しています。
ありがとう!
ランダムな名前のファイルで満たされたディレクトリがあります。時系列、つまりファイルの作成日に基づいて、「ファイル 1」「ファイル 2」などの名前に変更できるようにしたいと考えています。短い Python スクリプトを書くこともできましたが、それでは何も学べませんでした。これを解決できる巧妙な1行のコマンドがあるかどうか疑問に思っていました. 誰かが私を正しい方向に向けることができれば。
私はzshを使用しています。
ありがとう!
の場合zsh
:
saveIFS="$IFS"; IFS=$'\0'; while read -A line; do mv "${line[2]}" "${line[1]%.*}.${line[2]}"; done < <(find -maxdepth 1 -type f -printf "%T+ %f\n"); IFS="$saveIFS"
read
Bash の場合 ( 1 ベースではなくゼロベースのインデックス作成オプションとの違いに注意してください):
saveIFS="$IFS"; IFS=$'\0'; while read -a line; do mv "${line[1]}" "${line[0]%.*}.${line[1]}"; done < <(find -maxdepth 1 -type f -printf "%T+\0%f\n"); IFS="$saveIFS"
これらは、変更日を元のファイル名の先頭に追加することでファイルの名前を変更します。これは、名前の衝突を防ぐために保持されます。
これによるファイル名は次のようになります。
2009-12-15+11:08:52.original.txt
ヌルが内部フィールド セパレータ (IFS) として使用されるため、スペースを含むファイル名は保持する必要があります。