3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

文字化けファイルをinode指定せずファイル名で削除

Last updated at Posted at 2018-03-12

ファイル名が文字化けしたものを削除する場合、findでinodeサーチしたものを削除する方法がよく紹介されていますが、他に方法は無いかと思い調べてみました。

環境

  • ロケールはja_JP.UTF-8
$ cat /etc/sysconfig/i18n
LANG="ja_JP.UTF-8"

準備

  • 文字化けさせるファイルを生成
$ touch ほげ ほげほげ ほげほげほげ

$ ll
合計 0
-rw-r--r-- 1 root root 0  3月 12 10:52 2018 ほげ
-rw-r--r-- 1 root root 0  3月 12 10:52 2018 ほげほげ
-rw-r--r-- 1 root root 0  3月 12 10:52 2018 ほげほげほげ
  • convmvコマンド(ファイル名の文字コード変換)をインストール
$ yum intall convmv

検証

  • まずは準備したファイルの文字コードを変換
$ convmv -r -f utf8 -t sjis ほげほげ --notest
mv "./ほげほげ" "./?ق??ق?"
Ready!

$ ll
合計 0
-rw-r--r-- 1 root root 0  3月 12 10:52 2018 ?ق??ق?
-rw-r--r-- 1 root root 0  3月 12 10:52 2018 ほげ
-rw-r--r-- 1 root root 0  3月 12 10:52 2018 ほげほげほげ

utf8からsjisに変換したところ、綺麗に文字化けしました。
ここでlsで出力されるファイルの上から2番目(ほげほげ)を変換しましたが、変換後の出力では上から1番目に出力されていました。

もしかして文字化けしたファイル名のファイルは、lsすると一番上に表示される?と思い、実ファイルの存在するディレクトリでも試してみました。

$ touch /var/log/きーた

$ ll /var/log/
合計 66744
drwxr-xr-x.  2 root    root        4096 11月 11 07:09 2010 ConsoleKit
(中略)
-rw-r--r--   1 root    root           0  3月 12 10:56 2018 きーた

$ convmv -r -f utf8 -t sjis /var/log/きーた --notest
mv "/var/log/きーた"    "/var/log/???[??"
Ready!

$ ll /var/log/ | head -2
-rw-r--r--   1 root    root           0  3月 12 11:22 2018 ???[??
drwxr-xr-x.  2 root    root        4096 11月 11 07:09 2010 ConsoleKit

おお、一番上になってる。

  • なら複数ファイルが文字化けしていたら?
$ touch ほげ ほげほげ ほげほげほげ ふー ふーふー ふーふーふー

$ ll
合計 0
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ふー
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ふーふー
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ふーふーふー
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ほげ
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ほげほげ
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ほげほげほげ

$ convmv -r -f utf8 -t sjis ほげ --notest
mv "./ほげ"     "./?ق?"
Ready!

$ convmv -r -f utf8 -t sjis ふーふー --notest
mv "./ふーふー" "./?Ӂ[?Ӂ["
Ready!

$ ll
合計 0
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ?ق?
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ?Ӂ[?Ӂ[
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ふー
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ふーふーふー
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ほげほげ
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ほげほげほげ

文字化けファイルが上から順に2ファイル並んでる!
そうであれば…

実践

検証結果を踏まえ、ls出力から文字化けしたファイル数分だけ抜き出してrmに引き渡せば消せる?

$ ll
合計 0
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ?ق?
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ?Ӂ[?Ӂ[
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ふー
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ふーふーふー
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ほげほげ
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ほげほげほげ

$ ls | head -2 | xargs rm

$ ll
合計 0
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ふー
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ふーふーふー
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ほげほげ
-rw-r--r-- 1 root root 0  3月 12 11:03 2018 ほげほげほげ

消えた!

以上、Qiita初投稿は小ネタとなりました。

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?