renameコマンドでワイルドカードを用いたファイル名変換を試す
ubuntuでスクリーンショットを取ると、デフォルトだとピクチャフォルダに以下の名称で保存してくれます。
Screenshot from 西暦-年-月(例:2021-05-22) 時間-分-秒(例12-34-33).png
いつ、スクリーンショットを取ったのかすぐわかるのでいいのですが、名称がちょっと長いのはいいとして、所々に空白があるのがすごく気になります。
これらの画像をブログで使用する際、扱いづらくて仕方がないです。
そこで、名称の変更をしようとしましたが、そこで、えらい苦労をしたので、備忘録を兼ねて記録に残します。
どうか、ご一緒に内容をご覧ください。
名称の変更に挑戦
60爺の場合、Linuxでは、名称の変更にはmvコマンドをすぐに思い出します。
一つのファイルであれば、このコマンドで何の問題もなく名称の変更ができます。
mv 'Screenshot from 2021-09-09 14-08-26.png' sudoku_1.png
しかし、大量のファイルだと、とてもやっていられません。
そこで、ワイルドカードを使ってみようとしましたが、なぜかエラーになってしまいます。
mv 'Screenshot from 2021-09-09'*.png sudoku_*.png
mv: 宛先の 'sudoku_*.png' はディレクトリではありません
変なエラーが出ました。ウググ、スキルのない60爺では対応できないです。
ファイル名の変更をググってみたら、mvコマンドではなく renameコマンドなるものがあるというので、そちらでやってみようということになりました。
renameコマンドでファイル名変更
renameインストール
早々に次のコマンドを叩いてみました。
rename 'Screenshot from 2021-09-09 ' sudoku_ 'Screenshot from 2021-09-09 '*.png
コマンド 'rename' が見つかりません。次の方法でインストールできます:
sudo apt install rename
標準ではインストールされていないんですね。
そこで、最後の行で指定されたコマンドで rename をインストールしました。
何ら問題なく、renameがインストールされました。
ワイルドカードを用いたファイル名変更
それでは、ファイル名を変更してみます。
rename 'Screenshot from 2021-09-09 ' sudoku_ 'Screenshot from 2021-09-09 '*.png
Illegal octal digit '9' at (user-supplied code), at end of line
Illegal octal digit '9' at (user-supplied code), at end of line
ウムム、またまた訳の分からないエラー発生です。ファイル名の中に空白が多数あるのが問題ではと考え、これを '_’ に変更してみます。
find . -name "* *" | rename 's/ /_/g'
以下のように、空白が _ に変換されました。
【変更前】
ls
'Screenshot from 2021-05-22 12-34-33.png'
'Screenshot from 2021-09-09 12-17-01.png'
'Screenshot from 2021-09-09 12-18-43.png'
'Screenshot from 2021-09-09 12-18-48.png'
【変更後】
ls
Screenshot_from_2021-05-22_12-34-33.png
Screenshot_from_2021-09-09_12-17-01.png
Screenshot_from_2021-09-09_12-18-43.png
Screenshot_from_2021-09-09_12-18-48.png
この後、入力した renameコマンドが、またもや、エラーになってしまいました。
rename Screenshot_from_2021-09-09_ sudoku_ Screenshot_from_2021-09-09_*.png
Misplaced _ in number at (eval 8) line 1.
Illegal octal digit '9' at (user-supplied code), at end of line
Illegal octal digit '9' at (user-supplied code), at end of line
rename Screenshot_from_2021-09-09 sudoku Screenshot_from_2021-09-09*.png
Illegal octal digit '9' at (user-supplied code), at end of line
Illegal octal digit '9' at (user-supplied code), at end of line
rename Screenshot_from_2021-09-09_ sudoku Screenshot_from_2021-09-09_*.png
Misplaced _ in number at (eval 8) line 1.
Illegal octal digit '9' at (user-supplied code), at end of line
Illegal octal digit '9' at (user-supplied code), at end of line
正規表現を正しく!
調べてみたところ、このページに耳寄りな情報がありました。
このページの英語部分を訳してみると以下の通りです。
日本語訳
Windowsでは、構文は次のとおりです。
rename search replace file1 [file2 file3…]
しかし、Ubuntuでは、「検索」と「置換」の部分はいわゆる"正規表現"となります。即ち、構文は次のようになります。
rename 's/search/replace/;' file1 [file2 file3…]
このことから、renameコマンドは windows と ubuntu で書き方が違うのだということがわかりました。
60爺が入力したのは、windows 向けの構文だったようです。
そこで、上記にあるように ubuntu 向けのコマンドを打ってみたところ、見事にファイル名を変換できました。
rename 's/Screenshot_from_2021-09-09_/sudoku/;' Screenshot_from_2021-09-09_*.png
【変更前】
ls
Screenshot_from_2021-09-09_12-17-01.png
Screenshot_from_2021-09-09_12-18-43.png
Screenshot_from_2021-09-09_12-18-48.png
【変更後】
ls
sudoku12-17-01.png
sudoku12-18-43.png
sudoku12-18-48.png
このコマンドなら空白があってもファイル変換できそうです。次回ファイル変換を実施する際に試してみようと思います。
最後に
ubuntuでスクリーンショットを取ったら、保存されたファイル名に空白がいくつか入っていたのでびっくり。
使いにくいので、名称を変えようと思い立ちました。
Linuxではmvコマンドで行いますが、複数のファイル名変換にはrenameコマンドなるモノがありました。
インストールが必要でしたが、使い方もwindowsとは異なる部分があって勉強になりました。
■思えば「ubuntu」の記事も増えてきました!
ディスカッション
コメント一覧
まだ、コメントがありません