回答:
通常の方法では削除できないファイルに関しては、究極の解決策は次のとおりです。
ls -il
最初の列には、ファイルのiノード番号が表示されます。
find . -inum [inode-number] -exec rm -i {} \;
これにより、検証後に指定されたinode-numberのファイルが削除されます。
-delete
代わりに使用するように変更し-exec
、それがあなたが使用していることに気づいたrm -i
ので、私はロールバックしました。ごめんなさい。
~/~
チルダの展開~
では単語の先頭にあるチルダ()のみが適用されるため、そのファイルを(引用符なしで)参照できるはずです。
rm ./~
、あなたが言ったのと同じ理由で
./~
文字通り「~
現在のディレクトリで指定されたファイルまたはフォルダ」を意味するため、他の回答と比較して、「最良の」最も簡単なソリューションと見なします。エスケープ文字やiノード参照のようなハックはありません。
./~
します。5年後、私の記憶が少しあいまいですが、私は私が提案し、その理由があると思う~/~
というより、通常より./~
:質問は、具体的には、「名前のファイルを参照~
[OPさん]でホームディレクトリ」。「現在のディレクトリ内」ではありません。
引用符(rm '~'
)またはエスケープ(rm \~
)します。
常にこれらのいずれか(たとえば$
)であるか--
、ファイル名が引数として解釈されるのを防ぐために追加します:rm -- -i
という名前のファイルを削除します-i
; またrm -- *
、現在のディレクトリ内のすべてのファイルを削除する場合にも役立ちます。ファイルにそのrm -f *
ような名前が付けられているからといって偶然ではありません。
--
パラメータとして解釈される次の引数のみを停止します-シェルが展開を実行するのを妨げません(例:*
ここで何が起こっているのか)。(他の状況の代替としてあなたがそれを提案したことは知っていますが、警告は良いでしょう。)