隠しファイル/フォルダーが表示されないのはなぜですか?


140

私がdu -sch ./*これを見つけたとき、私は何の理由もなく備蓄したかもしれない大きな役に立たないファイルを見つけるために私のシステムを探していました:

$ du -sch ./*
du: cannot read directory ‘./drbunsen/.gvfs’: Permission denied
du: cannot read directory ‘./drbunsen/.cache/dconf’: Permission denied
18G ./drbunsen
18G total

$ cd drbunsen/
$ du -sch ./*
601M ./Desktop
20K ./Documents
598M ./Downloads
4.0K ./flash
4.0K ./Music
8.0M ./Pictures
4.0K ./Public
4.0K ./Templates
4.0K ./Ubuntu One
8.0K ./Videos
11G ./VirtualBox VMs
6.9M ./workspace
12G total

隠しファイルを表示するにはどうすればよいですか?du -sch ./.*と同じ結果が得られdu -sch ./*ます。


du -hs .[^.]* *すべての隠しファイルを除外し ...他のどの回答が欠落しているように見えます。
laggingreflex

回答:


245

つかいます

du -sch .[!.]* * |sort -h

あなたのホームフォルダに。

また、私が最も頻繁に使用するコマンドは

ncdu

必要に応じて簡単にインストールできます。

sudo apt-get install ncdu

1
ありがとう、あなたは天才です。私はbashの達人ではありません、何をしますか[!。]
Dr_Bunsen

10
@Dr_Bunsen:これは、単一ので始まるすべてのファイルをリストするグロブです.。ここにきちんとしたトリックがあります:globのようなものが何をするのかわからない場合は、実行してみてくださいecho .[!.]*。次に、シェルはグロブを展開してに渡しecho、結果のファイルのリストを出力します。
Tikhon Jelvis

14
likeという名前のファイルのリストに失敗し ..foo、名前がで始まるファイルで問題が発生する可能性があります-。argリストが長すぎる場合も失敗する可能性があります。du -ahd1これらの問題はありません。
ステファンシャゼル

元の質問とは無関係ですが、日々の使用に関連しています。合計を表示し、オプションを少し並べ替えてこのコマンドを覚えやすくするために、「c」スイッチを含めると便利ですdu -cksh .[!.]* * |sort -h
パパ

56

coreutilsのメーリングリストにも同じ質問があります。@ don.joeyによるこの奇妙なコマンドを思い出すのは難しかったからです。そして、ボブ・プルックス、より良い、より自然なコマンドを提案しました: du -ahd1 | sort -h

現在のディレクトリ内のすべてのファイルをリストする場合は、「。」を使用します。または、ファイル引数をまったく与えないでください。また、-d、--max-depth = Nオプションを使用することもできます。

これを試して:

du -hd1


7
-a同等になるようにオプションを追加します。
ステファンシャゼル

6
覚えやすく理解しやすいので、これが受け入れられた答えになるはずです。
バスティエン

8

ディレクトリ内で同じコマンドを実行すると.、カウントで始まる隠しファイルは含まれません。たとえば、Steamをインストールしている場合、デフォルトでゲームをインストールし~/.local/share/Steam/、それ自体もインストールされます。

bash du -sch .[!.]* *では、.*グロブが適切に展開されないため、実行する必要があるようです。現在のディレクトリ内のすべての隠しファイルのリストを含むように展開する必要がありますようにzsh、下または他のシェルdu -sch * .*が動作する.*はずです。


OK。bashが適切に展開されていないように見えるため、bashに問題があるようです.*。しかしdu -sch * .*、の下で正しいことを行いzshます。bashの下でdu -sch .*は、カウントされているように見えます.が、ファイルを個別に表示するようには拡張されません。
ドビー

私にとって。*も../*に展開されるため、duはそのサイズを確認したいディレクトリから出ます!代わりに./.[^.]*を使用する必要がありました。
アリ14

zshと、Forsythシェルから派生したすべてのシェル(今日ではほとんどがpdkshとその派生物にすぎません)が正しいことを行い、展開しません。そしてここ。他のすべてのBourne風のシェル(bash、Bourne、AT&T ksh、dash、yash ...)は実行します。ではzshdu -sch -- *(D)ではなく、を使用しますdu -sch -- * .*
ステファンシャゼル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.