Listar arquivos em subdiretórios específicos

Listar arquivos em subdiretórios específicos

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

Quero listar os arquivos + tamanho do arquivo para todos os arquivos nas subpastas das pastas 'a'. Eu tentei usar find, mas estou preso. Qual seria o comando certo?

Responder1

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

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

Verman findpara outras strings de formato que você pode usar com -printf. Em particular, você pode querer %Pou %fem vez de %pe talvez %bem vez de %s.

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

GNU finddeve ser padrão no CentOS, mas se você precisar de código adequadamente portável, talvez use find ... -exec stat {} \;(mas observe que isso stattambém tem problemas de portabilidade; o comando deve existir na maioria das plataformas, mas como exatamente fazê-lo imprimir algo específico varia entre as implementações). Outra opção é find ... -lsmas então você está enfrentandoanalisando ls.

Se você não precisa percorrer subdiretórios, não precisa do find.

stat -c '%s %n\n' /[123]/a/*/*

informação relacionada