Linuxで通常削除処理できないファイルを削除する
ファイルを削除するにはrmコマンドを実行します。
しかし、名称が「-」で始まるファイルや、スペース、メタキャラクタ(メタ文字)が含まれるファイルは、シェルが正しくファイルを認識出来ないため削除できません。
このような名称のファイルは、Linuxの通常処理ではエラーになるため作成出来ませんが、WindowsやMacOSでは、ファイルやディレクトリが作成出来るため、ファイル共有やファイルのアップロードを行った場合、このような名称のファイルがLinuxに存在することがあります。
この場合、名称にハイフン「--」が含まれるものであれば、rmコマンドに「--」オプションを付けて引数にハイフンを含むファイルを指定して削除するか、ファイル名の先頭に「./」を付けて削除します。
スペースを含むファイルの場合、ファイル名をクォーテーション「'」または、ダブルクォーテーション「"」で囲む事で削除できますし、スペースの前にエスケープシーケンスを付けることで削除できます。
●Linuxで通常処理で削除できないファイルを削除する
[root@Lion ~]# ls ←ファイルを表示します。 -prive.txt sample index html.txt ← 「-prive.txt 」「sample index html.txt」があります [root@Lion ~]# rm -prive.txt ←通常処理の削除を実行 rm: オプションが違います -- 'l' ←エラーメッセージが表示され削除できません。 Try `rm ./-prive.txt' to remove the file `-prive.txt'. 詳しくは `rm --help' を実行して下さい. [root@Lion ~]# rm sample index html.txt ←通常処理の削除を実行 rm: cannot remove `sample: そのようなファイルやディレクトリはありません rm: cannot remove `index': そのようなファイルやディレクトリはありません rm: cannot remove `html.txt': そのようなファイルやディレクトリはありません。 ↑エラーメッセージが表示され削除できません [root@Lion ~]# rm -- -prive.txt ←「--」オプションを付けて削除 [root@Lion ~]# ls ←ファイルを表示します。
sample index html.txt ←「-prive.txt」が削除されている [root@Lion ~]# rm This\ is\ filetest.txt ←スペースの前にエスケープシーケンスを付けて削除
[root@Lion ~]# ls [root@Lion ~]# ← sample index html.txt が削除されています |
●ハイフン付きのファイルを「./」で削除する
[root@Lion ~]# ls ←ファイルを表示します。 -prive.txt ← 「-prive.txt 」があります [root@Lion ~]# rm ./-prive.txt ←「./」を付けて削除 [root@Lion ~]# ls [root@Lion ~]# ←ファイルが削除されています |
●スペースを含むファイルをダブルクォーテーション「"」で囲んで削除する
[root@Lion ~]# ls ←ファイルを表示します。 sample index html.txt ← 「sample index html.txt」があります [root@Lion ~]# rm "sample index html.txt " ← ダブルクォーテーション「"」で囲んで削除 [root@Lion ~]# ls [root@Lion ~]# ←ファイルが削除されています |