0
0

More than 3 years have passed since last update.

CentOS上の文字化けしたファイルを削除する

Last updated at Posted at 2019-11-28

はじめに

CentOSにログインした時、ls/homeディレクトリにゴミがあることに気づいた。
名前が??x?・4a???とよくわからないことになっている。
おそらくWindows OSで作成したデータファイルをteraterm や winscpでアップロードしてしまったのだろうと思われる。

rm -f ??x?・4a???で消せない

そんなファイルはないと警告されてしまう。

rm -rf * で消せない

rmで削除したいが/homeには様々なファイルが置いてあるので rm -rf * が使えない。

さて困った

qiitaなどで調べてみたが、意外とこのようなケースへの対処方法がない。

解決策

基本的なデータの管理について思い出してみる

Linuxはデータファイルが実際に保管される領域とinode(index node)領域というものにデータファイルの情報を保存/管理する。

inodeとは

ファイルやディレクトリの所有者、更新日時、ファイルサイズなどを管理しているデータをinodeという。
inodeにはinode番号と呼ばれる管理番号が割り当てられており、これを指定することでデータそのものを操作することが可能になる。

解決手順

1.ファイルのinode番号を調べる

inode番号を調べる
ls -li
合計 xxx
1234567890    test?_.txt
-----------------------------
inode number  file name

2.inode番号でファイルを検索し、削除

inode番号で検索し、削除
find . -inum 1234567890 -exec rm -rf {} \;

補足

-execオプションを使うと、findで検索されたファイルに対して他の処理を行わせることができる。
-exec {} \; はfindで検索されたファイルを個別に、ファイルの数だけ処理を行う。
-exec {} + はfindで検索されたファイルをまとめて 1つの処理を行う。

参考

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