web-dev-qa-db-ja.com

Bashを使用してすべての隠しファイルとディレクトリを削除する方法は?

明白な解決策は、1の終了コードを生成します。

bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1

可能な解決策の1つは「。」をスキップすることです。および「..」ディレクトリですが、名前が3文字を超えるファイルのみを削除します。

bash$ rm -f .??*
28
Yonatan Broza
 rm -rf。[^。]。?? * 

すべてのケースをキャッチする必要があります。 。?? *は(前の回答で説明したように)3文字以上のファイル名にのみ一致し、。[^。]は(..以外の)2文字のエントリをキャッチします。

34
find -path './.*' -delete

これは、.で始まる現在のディレクトリ内のすべてのファイルに一致し、これらを再帰的に削除します。非表示でないディレクトリにある非表示のファイルは変更されません。

ディレクトリからeverythingを本当にワイプしたい場合は、find -deleteで十分です。

2
Fritz

おそらく最良の方法は:

  • 見つける。 -iname。* -maxdepth 1 -type f -exec rm {} \;

rmls -lに変更します。何が削除されるかを確認したいだけの場合、出力を詳細に表示するには、追加したい-vオプションを使用します。にrm

  • -type fオプションは、ファイルのみを検索するようにfindコマンドに指示します(dirs、リンクなどは省略します)
  • -maxdepth 1は、サブディレクトリに移動しないようにfindに指示します

ps。 「\;」で終わることを忘れないでください。

0
savecore