Linux: lista o conteúdo de subdiretórios com nome próprio?

1

Estou usando o linux para analisar uma estrutura de diretórios do Windows. A estrutura é:

/Documents and settings
  /username1
    /My Documents
    ...
  /username2
    /My Documents
    ...
  ...

Qual comando posso executar para que o conteúdo (e subpastas) de todos os diretórios "Meus Documentos" sejam listados como:

/Documents and Settings/username1/My Documents/filename
/Documents and Settings/username1/My Documents/subdir/filename
/Documents and Settings/username2/My Documents/filename

Basicamente, há uma tonelada de usuários, mas quase nenhum tem nada na pasta Meus Documentos. Eu só quero encontrar e mostrar o conteúdo desses usuários que fazem tem documentos.

EDIT: Cada diretório "username" contém muitos subdiretórios. Eu só quero listar a árvore abaixo da pasta Meus Documentos, mas para todos os nomes de usuários de uma só vez.

    
por Dane O'Connor 18.09.2009 / 18:09

6 respostas

2

Combinando as duas primeiras respostas, use find e ls -R:

encontre "/ Documents and settings" -nome "Meus Documentos" -exec ls -R {} \;

Isso encontrará todos os diretórios Meus Documentos e listará tudo abaixo deles, com nomes de caminhos completos. Você precisa das aspas, pois os nomes dos diretórios possuem espaços.

Edit: Uma explicação de como isso funciona. Começa em / Documents and settings , procurando por qualquer arquivo ou diretório que corresponda a Meus Documentos . Para cada um que encontrar, ele substitui o caminho para {} no ls. O \; significa o fim do comando.

    
por 18.09.2009 / 18:31
2

Apenas para adicionar à coleção, ls -R não produz realmente a saída legal, então eu uso o comando tree em vez

find "/Documents and settings" -name "My Documents" -exec tree -f -i --noreport {} \;
    
por 11.10.2012 / 00:25
1
ls -R path_to_your_dir

ou

ls -lR path_to_your_dir

para uma melhor visualização

No entanto, a melhor visualização é obtida com

find path_to_your_dir

NOTA: -R significa recursivo

    
por 18.09.2009 / 18:12
0

Você pode usar o comando # find your_dir

    
por 18.09.2009 / 18:13
0

Se você quiser ver o nome do caminho e não quiser ter a listagem recursiva -R completa, isso parece fazer o que você quer, mas é um pouco desajeitado:

find . -type d -name '*Documents' ! -empty | (while read d; do echo $d; ls -la $d; done)
    
por 18.09.2009 / 18:41
0

Se você quiser a listagem recursiva de arquivos e pastas em Documentos e configurações / Usuário / Meus documentos :

find Documents\ and\ Settings/*/My\ Documents -print

Se você deseja apenas os arquivos e pastas diretamente em Documentos e configurações / Usuário / Meus documentos:

ls -dr Documents\ and\ Settings/*/My\ Documents/*

O primeiro incluirá um arquivo como Documentos e configurações / Usuário / Meus documentos / dir1 / arquivo1 , enquanto o último listará apenas Documentos e configurações / Usuário / Meus documentos / dir1

    
por 18.09.2009 / 20:05