LoginSignup
1
2

More than 1 year has passed since last update.

URLエンコードされたファイル名を一括でデコードしてmvする

Last updated at Posted at 2017-12-13

背景

あるシステムで日本語を含んだファイルをダウンロードするとファイル名がURLエンコードされる場合がある.
例えば,【重要】日本人ってこういうファイル名好きすぎでしょ.txtというファイルであれば%E3%80%90%E9%87%8D%E8%A6%81%E3%80%91%E6%97%A5%E6%9C%AC%E4%BA%BA%E3%81%A3%E3%81%A6%E3%81%93%E3%81%86%E3%81%84%E3%81%86%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E5%A5%BD%E3%81%8D%E3%81%99%E3%81%8E%E3%81%A7%E3%81%97%E3%82%87.txtとなる.

このようなファイル群をターミナルからコマンド一発で良い感じに元に戻したい.

方法

find -E . -regex '^.+%[0-9A-Z][0-9A-Z]+.*' -exec bash -c "mv {} \`echo {} | nkf --url-input \`" \;

解説

  1. find -E . -regex '^.+%[0-9A-Z][0-9A-Z]+.*'でファイル名に%から始まり英語大文字と数字の2回以上の繰り返しを含むファイルを検索
  2. findの検索結果のリストが{}に格納される
  3. echo {} | nkf --url-inputで2.の結果をURLデコード
  4. mv {} \`echo {} | nkf --url-input`\mv {デコード前のファイル名} {デコード後のファイル名}という動作をしてくれる

参考

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2