現在のディレクトリからドットで始まるすべてのファイルを削除する方法は?

現在のディレクトリからドットで始まるすべてのファイルを削除する方法は?

私はUbuntu 14.04を使用しており、ターミナルでsudo suを使用してルートになり、ルートのジャンクを手動で削除したいと思います。ドットで始まる一部のファイルを除くすべてのファイルを削除します。 .htaccessなどと同じです。そのため、対応するディレクトリ(「files」など)に移動し、次のコマンドを実行します。

rm -rf .*

ファイルは削除されましたが、システムから「。」また、「..」を削除できないというエラーメッセージも表示されました。どういう意味ですか?ディレクトリツリー全体を削除しようとしたらどうでしょうか?私が言ったように、コマンドを実行すると、最も低いディレクトリにあります。正確に言えば、/root/.local/share/Trash/files/ コンピュータの電源を切ってから再度電源を入れました。一見すると、すべてが正常に見えます。今私は何が間違っているのか尋ねています、そして私がしていることは実際にシステムに深刻な損傷を与えていますか?つまり、今心配する必要がありますか、それとも大丈夫でしょうか?

答え1

.*名前で始まるすべてのファイルと一致します.。各ディレクトリには、.ディレクトリ自体を参照するファイルと、..親ディレクトリを参照するファイルが含まれています。.*次のファイルが含まれます。

幸いなことに、アンインストールの試みが.失敗するため、..無害なエラーが発生します。

zshでは.*一致しませ...。 Bashでは設定できます

GLOBIGNORE='.:..:*/.:*/..'

次に、*ドットファイルを含むすべてのファイルと一致しますが、...

.または、以下を明示的に除外するワイルドカードパターンを使用できます..

rm -rf .[!.]* ..?*

または

rm -rf .[!.] .??*

またはfind

find . -mindepth 1 -delete

答え2

すべてのドットファイルを削除するには、次のコマンドを使用するのが慣例です。

rm .??*

これにより、2つ以上の異なる文字を含むドットで始まるすべてのファイルが削除され、そのまま残り.ます..。もちろん、ドットの後に文字が1つしかないファイル名も失われますが、これはまれです。

答え3

find /path/to/dir -type f -name ".*" -delete

答え4

あなたの目的に応じてこのエラーを無視することができます。

ワイルドカードマッチングを使用しました。正規表現と混同しないでください。で終わるすべての項目を削除し、何も削除しないか、それ以降は何も削除しないと言います。

今、エラーメッセージにはと.が含まれているからです...は現在のディレクトリのショートカット、「..」は親ディレクトリのショートカットです。 (技術的には異なる意味ですが、この会話では機能します。)

現在存在するディレクトリは削除できません。そうでなければどこにありますか?そして親ディレクトリを削除することはできません。それ以外の場合は、現在のディレクトリがそのディレクトリに移動されます。今、その言葉は完全に真実ではありません。できる現在のディレクトリと親ディレクトリを削除します。しかし、ツール設定(この場合はrm)はやや直観にずれているので、やや難しいです。

何が間違っていて、私がしたことは実際にシステムに重大な損傷をもたらす可能性がありますか?

ご質問いただいた内容に基づき、私のもの答えはそうです。あなたが何か間違っていることです。そしてそうです。システムにかなり重大な損傷を与える可能性があります。

何よりも高い権限でコマンドを実行します。結果が既にわかっていない限り、昇格された権限を使用して何も再帰的に実行しないでください。自分が何をしているのかを正確に知らない限り、昇格した権限を持つアイテムを削除しないでください。次回それを使用してくださいmv。これにより、何かを台無しにした場合に元に戻すことができます。

実際に発生したダメージ、つまりゴミ箱を削除すると、大きなダメージではないかもしれませんが、潜在的にダメージを与える可能性があります。特に高い特権でコマンドを実行する場合は、さらにそうです。

関連情報