Existe uma maneira de limitar a profundidade de uma lista de arquivos recursivos no linux?
O comando que estou usando no momento é:
ls -laR > dirlist.txt
Mas eu tenho cerca de 200 diretórios e cada um deles tem dez diretórios. Portanto, isso levará muito tempo e consumirá muitos recursos do sistema.
Estou realmente interessado nas informações de propriedade e permissões dos subdiretórios de primeiro nível:
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk
drwxr--r-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/htdocs
drwxr--r-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk
drwxr-xrwx 14 proftp root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/htdocs
drwxr-xrwx 14 proftp root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/htdocs
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/htdocs
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/cgi-bin
EDITAR:
Escolha final do comando:
find -maxdepth 2 -type d -ls >dirlist
ls -la /var/www/vhosts/*
?Respostas:
Confira a
-maxdepth
bandeira defind
Aqui eu usei 1 como profundidade máxima de nível,
-type d
significa encontrar apenas diretórios, que depoisls -ld
listam o conteúdo, em formato longo.fonte
-d
opçãols
.find
parte para resolver seu principal problema. De qualquer forma, obrigado, eu estou adicionando.-print0
exargs -0
muito. Exemplo:find . -maxdepth 1 -type d -print0 | xargs -0 ls -d
Faça uso das
find
opções deNa verdade, não há nenhum executivo
/bin/ls
necessário;O Find tem uma opção que faz exatamente isso:
Para ver apenas o nível de subdiretórios de seu interesse, adicione
-mindepth
o mesmo nível que-maxdepth
:Use formatação de saída
Quando os detalhes mostrados devem ser diferentes,
-printf
pode mostrar qualquer detalhe sobre um arquivo em formato personalizado; Para mostrar as permissões simbólicas e o nome do proprietário do arquivo, use-printf
com%M
e%u
noformat
.Mais tarde, notei que você deseja obter todas as informações de propriedade, que incluem o grupo. Use
%g
no formato para o nome simbólico ou%G
para o ID do grupo (como também%U
para o ID numérico do usuário)Isso deve fornecer os detalhes necessários, para os arquivos certos.
Vou dar um exemplo que mostra valores realmente diferentes para usuário e grupo:
(Editado para facilitar a leitura: última linha recuada, encurtada)
Notas sobre desempenho
Embora o tempo de execução seja principalmente irrelevante para esse tipo de comando, o aumento no desempenho é grande o suficiente aqui para fazer valer a pena destacar:
Não apenas salvamos a criação de um novo processo para cada nome - uma tarefa enorme - a informação nem precisa ser lida, como
find
já a conhecemos.fonte
tree -L 2 -u -g -p -d
Imprime a árvore de diretórios em um formato bonito até a profundidade 2 (-L 2). Imprima usuário (-u) e grupo (-g) e permissões (-p). Imprima apenas diretórios (-d). A árvore tem muitas outras opções úteis.
fonte
tree -L 2 xxx/
outree -L 2 -d xxx/
é suficiente para alguns casos.Encontrei uma solução fácil enquanto brincava com o meu peixe, que se encaixa perfeitamente na sua necessidade.
ou
fonte