Você pode obter o uso de links simbólicos usando -L
flag juntamente com o comando du
.
du -sh -L *
deve ajudá-lo.
Eu estou trabalhando em um servidor Debian onde eu tenho apenas acesso ao console sem o sudo. A pasta principal chamada applications inclui subpastas com todos os projetos que tenho.
No entanto, quando eu crio um novo projeto através do meu painel de administração, o nome da pasta é uma string sem sentido e você pode renomeá-lo criando um link simbólico para uma nova pasta.
Assim, por exemplo, a pasta de aplicativos é assim:
applications/
abuwryjbrb
evharjqgxj
MyCustomProjectName1
MyCustomProjectName2
Quero verificar quanto espaço cada um dos aplicativos usa. Como eu não tenho muita experiência em Unix, eu pesquisei e descobri que posso fazer isso com du -sh *
.
No entanto, a saída é assim:
91M abuwryjbrb
201M evharjqgxj
0 MyCustomProjectName1
0 MyCustomProjectName2
Como resultado, é muito demorado para eu verificar um por um os nomes e ver qual pasta é qual.
Existe alguma maneira de obter uma saída com o uso do disco para os links simbólicos?
Editar:
Usando du -sh -L *
, não recebo pastas duplicadas para original e com links simbólicos, mas recebo uma saída mista assim:
91M abuwryjbrb
201M MyCustomProjectName1
Onde algumas das pastas têm o nome original e algum nome de link simbólico
du -sh */
A barra à direita faz com que o curinga coincida com diretórios e links simbólicos para diretórios. Para links simbólicos para diretórios, o comando atua no destino.
Seus projetos serão listados duas vezes, uma para cada diretório e outra para seu link simbólico. Você pode evitar isso se houver uma maneira fácil de criar um padrão de curinga que corresponda apenas aos seus próprios nomes. Por exemplo, se você sempre capitaliza seus próprios nomes e os automáticos são sempre minúsculos, você pode usar
du -sh [A-Z]*/
Como alternativa, você pode usar
du -shD *
Isso também lista os arquivos regulares. A opção -D
indica du
para cancelar a referência aos links simbólicos passados na linha de comando. Os links simbólicos dentro de cada árvore de diretórios não são percorridos (ao contrário de -L
, o que não é uma boa ideia aqui).
No zsh, você pode usar
du -sc *(@-/)
para atuar apenas em links simbólicos para diretórios, ou du -sc *(@)
para atuar apenas em links simbólicos, qualquer que seja seu alvo.
Em qualquer shell, você pode usar
find . -maxdepth 1 -type l -xtype d -exec du -sh {} +
para atuar apenas em links simbólicos para diretórios.
Tags disk-usage debian symlink