1

ランダムな名前のファイルで満たされたディレクトリがあります。時系列、つまりファイルの作成日に基づいて、「ファイル 1」「ファイル 2」などの名前に変更できるようにしたいと考えています。短い Python スクリプトを書くこともできましたが、それでは何も学べませんでした。これを解決できる巧妙な1行のコマンドがあるかどうか疑問に思っていました. 誰かが私を正しい方向に向けることができれば。

私はzshを使用しています。

ありがとう!

4

1 に答える 1

3

の場合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"

readBash の場合 ( 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) として使用されるため、スペースを含むファイル名は保持する必要があります。

于 2009-12-15T17:46:10.980 に答える