De man find
-empty File is empty and is either a regular file or a directory.
Portanto, para encontrar arquivos e diretórios vazios, é suficiente fazer
find ~/lists -empty
Para indicar o tipo, você pode usar o especificador de formato de saída %y
%y File's type (like in ls -l), U=unknown type (shouldn't happen)
por exemplo,
find ~/lists -empty -printf '%y %p\n'
ou use um programa externo como ls
, que inclui uma opção --classify
-F, --classify
append indicator (one of */=>@|) to entries
ou seja,
find ~/lists -empty -exec ls -Fd {} \;
Se a sua definição de 'vazio' for expandida para incluir arquivos contendo apenas caracteres de espaço em branco, ela se tornará mais complicada - e mais intensiva em computação, já que agora é necessário abrir pelo menos arquivos não vazios e examinar seu conteúdo. A maneira mais eficiente que posso pensar em cima da minha cabeça seria algo como
find ~/list \( -empty -o \( -type f -a ! -exec grep -qm1 '[^[:blank:]]' {} \; \) \) -exec ls -Fd {} \;
(vazio, OU um arquivo AND grep não detecta pelo menos um caractere não vazio). Provavelmente, existe uma maneira melhor.