renameコマンドでワイルドカードを用いたファイル名変換を試す
ubuntuでスクリーンショットを取ると、デフォルトだとピクチャフォルダに以下の名称で保存してくれます。
Screenshot from 西暦-年-月(例:2021-05-22) 時間-分-秒(例12-34-33).png
名称がちょっと長いのはいいとして、所々に空白があるのがすごく気になります。これらの画像をブログで使用する際、扱いづらくて仕方がないです。
そこで、名称の変更をしようとしましたが、そこで、えらい苦労をしたので、備忘録を兼ねて記録に残します。
名称の変更に挑戦
名称の変更には、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(ubuntu)をインストールしてみた
- Windows10からUbuntu 20.04.1 LTSをsshで使用できるようにした
- Ubuntu 20.04 LTS デスクトップで固定IPアドレスを設定する方法
- UbuntuデスクトップにGoogle Chromeをインストール
- renameコマンドでワイルドカードを用いたファイル名変換を試す 本記事です
- ナンプレで頭の体操、ubuntuにはGNOME数独が標準インストールされている
- ubuntuにSamba導入でwindowsとファイル転送を楽々こなす
- Linux(ubuntu)でBrotherのDCP-J973Nをネットワークプリンタで設定
- どうにか対応!ubuntuでイヤホンの自動認識を実現する方法は?
ディスカッション
コメント一覧
まだ、コメントがありません