Listar arquivos em subdiretórios específicos

0

Eu tenho uma estrutura de pastas assim:

/1/a/x
/1/b/y
/2/a/z
/2/b/d
/3/a/r
/3/b/e

Eu quero listar arquivos + tamanho de arquivo para todos os arquivos em subpastas nas pastas 'a'. Eu tentei usar encontrar, mas estou preso. Qual seria o comando certo?

    
por Lennart 16.04.2018 / 13:00

1 resposta

1

Para imprimir o tamanho e o caminho completo, tente isso.

find /[123]/a/* -type f -printf '%s %p\n'

Consulte man find para outras strings de formato que você pode usar com -printf . Em particular, você pode querer %P ou %f em vez de %p e talvez %b em vez de %s .

[123] corresponde a um nome que é um único dígito no intervalo de 1 a 3; talvez estendê-lo para * ou algo um pouco mais restrito se o seu exemplo não corresponder exatamente à realidade que você está tentando descrever.

GNU find deve ser padrão no CentOS, mas se você precisar de código portável, use find ... -exec stat {} \; (mas note que stat também tem problemas de portabilidade; o comando deve existir na maioria das plataformas, mas como exatamente obtê-lo) para imprimir algo específico varia entre implementações). Outra opção é find ... -ls , mas você está enfrentando analisando ls .

Se você não precisar percorrer subdiretórios, não precisará de find .

stat -c '%s %n\n' /[123]/a/*/*
    
por 16.04.2018 / 13:09

Tags