次のファイル名構造を使用して、適切な曜日に名前を変更する必要があります。
GMT20161003-randomtext.mp4
結局はなるだろうmonday.mp4
さまざまなサブディレクトリにこのようなファイルが多いので、再帰的に実行できればもっと良いと思います。
ベストアンサー1
そしてzsh
:
zmodload zsh/datetime
autoload zmv
zmv -n '(**/)GMT(<->)*(.mp4)(#qD.)' '$1${(L)$(
strftime %A "$(strftime -r %Y%m%d $2)")}$3'
-n
実際に名前を変更するには削除してください。
<->
任意の10進数と一致します。- その秒は、 および のディレクトリ ( 、再帰的に)
(...)
にキャプチャされます。$2
(.mp4)
$3
(**/)
$1
(#qD.)
選択だけです定期的なファイル(.
:ディレクトリでも、シンボリックリンクでもなく、fifos / device ...)も隠されたディレクトリ(D
dotfile / dotdirの場合)を通過します。${(L)...}
:拡張子を小文字に変換します。strftime -r %Y%m%d
:reverse-strftime(strptime) 日付をエポック時間に変換します。strftime %A ...
:エポック時間の形式時間である%Aは、全体の営業日を表します。ロケールによって異なります。 (フランス語のロケールではフランス語の勤務日が適用されます)。
GNUシステムでは、GNUシェル(bash
)を使用して次のことができます。
find . -name 'GMT*-*.mp4' -type f -exec bash -c '
for file do
base=${file##*/}
date=${base#GMT}
date=${date%%-*}
wday=$(date -d "$date" +%A)
echo mv -i "$file" "${file%/*}/${wday,,}.mp4"
done' bash {} +
(echo
タスクを実行するには削除してください)。
${var,,}
beingbash
演算子は小文字に変換されます。日付を解析するGNU方式ですdate -d
(上記と同じ)。date
strftime -r
zmv
ファイル名の変更を開始する前に競合を確認しますが、今回はそうではありません。したがって、上記を追加すると、ファイルの-i
破損を最小限に抑える機会が得られます。 GNUには、今後の作業を表示するように指示するオプションがmv
あります。これは、問題が発生した場合に後でコマンドを再起動するのに役立ちます。-v