問題のコード:
ls | cat -n | while read n f; do mv "$f" `printf "video_%03d.mp4" $n`; done
上記のコードは、実行ディレクトリのすべてのファイル/フォルダ名を次のように変更します。
video_001.mp4
video_002.mp4
video_003.mp4
and so on...
ただし、特定の種類のファイルのみをターゲットとして指定することをお勧めします。たとえば、.mp4
すべてのもの(ディレクトリを含む)の名前を変更するのではなく、ファイル名のみを変更することをお勧めします。
答え1
.mp4
これにより、解析せずにすべてのファイルの名前が変更されますls
。
i=1; for file in *.mp4; do mv "$file" $(printf "video_%03d.mp4" "$i"); i=$((i + 1)); done
ステートメントにはすべてのglobを使用できますfor file in ...
。を使用して他の基準を適用できますfind
。