フォルダーの全部のファイルをナンバリングする

 タイムラプスの定点観測した写真をストップモーション・ビデオに変換するにあたって全部のファイルを一挙にレネームしたい。複数のファイルを一緒にリネームするrenameコマンドなどあるが、順番にナンバリングはできなそうだ

それではやっぱりunixのコマンドとパイプを使った−私にはちょっと難しいが−やり方でやってみました。

まずはリネームしたいファイルを一個のディレクトリーに全部いれておきます。端末コンソールを開き、そのファルダ−に入り、次のコマンドを実行します。

ls -v|cat -n|while read n f;do mv -n "$f" `printf "%04d.jpg" $n`;done

コマンドの説明をメモがわりにちょっと:

上のコマンドラインの左から

ls -v 自然な順番でファイル名をリストします

cat -n lsコマンドの出力をもらって(パイプライン)それをナンバリングして出力します

whileからdoneまではcatの行番号つきのファイル一覧を順番にもらってmvコマンドでファイルをリネームします。それを全部のファイルについて繰り返します

mv -n "$f" `printf "%04d.jpg" $n`

がそれで元のファイル名を書式付き連番のファイル名で置き換えます。-nオプションは連番つきのファイルがあったら上書きしない指定です。



上の図がリネームする前で下がリネーム後です。57個のファイルがリネームできました。

awk コマンドでも同様の処理ができますが、コマンドのパイプ処理の方私にはがわかりやすいです。




コメント

このブログの人気の投稿

feh 軽くてコマンドラインで起動するイメージ・ビュワー/スライドショー Xウィンドウ用linux

lmms, blender、フォントが小さい。小さいフォントはルーペで解決