私はSudoなしでコンソールアクセスしかできないDebianサーバーで作業しています。アプリケーションと呼ばれるメインフォルダーには、私が持っているすべてのプロジェクトを含むサブフォルダーが含まれています。
ただし、管理パネルから新しいプロジェクトを作成する場合、フォルダー名は意味のない文字列であり、新しいフォルダーへのシンボリックリンクを作成することで名前を変更できます。
したがって、たとえば、アプリケーションフォルダは次のようになります。
applications/
abuwryjbrb
evharjqgxj
MyCustomProjectName1
MyCustomProjectName2
各アプリケーションがどのくらいのスペースを使用しているかを確認したいと思います。私はUnixの経験があまりないので、グーグルで検索したところ、du -sh *
でそれができることがわかりました。
ただし、出力は次のようになります。
91M abuwryjbrb
201M evharjqgxj
0 MyCustomProjectName1
0 MyCustomProjectName2
その結果、名前を1つずつ確認して、どのフォルダーがどれであるかを確認するのに時間がかかりすぎます。
代わりに、シンボリックリンクのディスク使用量で出力を取得する方法はありますか?
編集:
代わりにdu -sh -L *
を使用すると、元のフォルダとシンボリックリンクの両方で重複したフォルダは取得されませんが、次のような混合出力が得られます。
91M abuwryjbrb
201M MyCustomProjectName1
一部のフォルダには元の名前と一部のシンボリックリンク名があります
-L
フラグとdu
コマンドを使用して、シンボリックリンクの使用法を取得できます。 du -sh -L *
が役に立ちます。
_du -sh */
_
末尾のスラッシュにより、ワイルドカードはディレクトリおよびディレクトリへのシンボリックリンクと一致します。ディレクトリへのシンボリックリンクの場合、コマンドはターゲットに作用します。
プロジェクトは2回リストされます。1回はディレクトリごとに、もう1回はそのシンボリックリンク用です。自分の名前にのみ一致するワイルドカードパターンを作成する簡単な方法があれば、それを回避できます。たとえば、常に自分の名前を大文字にし、自動名を常に小文字にする場合は、次を使用できます。
_du -sh [A-Z]*/
_
または、
_du -shD *
_
これには通常のファイルもリストされます。オプション_-D
_は、コマンドラインで渡されたシンボリックリンクを逆参照するようにdu
に指示します。各ディレクトリツリー内のシンボリックリンクはトラバースされません(_-L
_とは異なり、ここではお勧めできません)。
Zshでは、次を使用できます
_du -sc *(@-/)
_
ディレクトリへのシンボリックリンクのみに作用する、またはターゲットに関係なくシンボリックリンクのみに作用するdu -sc *(@)
。
どのシェルでも、
_find . -maxdepth 1 -type l -xtype d -exec du -sh {} +
_
ディレクトリへのシンボリックリンクにのみ作用します。