Exemplos de linha de comando e script com uso de printf em bash.
Alguns exemplos mostrando somente nomes de arquivos
Com quebra de linha, um nome por linha (\n) insere a quebra de linha find /tmp/guiaz -type f -printf '%f\n' find /tmp/guiaz -type f -printf "%f\n" Com sort, em ordem normal find /tmp/guiaz -type f -printf '%f\n' | sort Invertendo a ordem find /tmp/guiaz -type f -printf '%f\n' | sort -r resultado na mesma linha sem separador find /tmp -type f -printf '%f' resultado na mesma linha com separador, neste exemplo " ; ", troque pelo caractere desejado find /tmp/guiaz -type f -printf '%f ; '
Mais alguns exemplos com resultados.
Caminho, nome, último acesso e permissão
find /tmp/guiaz -type f -printf '%p %a %m\n' find /home/zago/guiaz/A-menu.t2t -type f -printf '%p %a %m\n' /home/zago/guiaz/A-menu.t2t Wed Jul 26 22:24:43 2006 644
Veja mais opções no tópico seguinte (manual do printf), faça testes, compare o resultado com outras opções, troque nos exemplos acima (%f %p %a %m) pela opção que melhor lhe atende.
Passe o resultado do "find" via pipe "|" para "sort" ordenar. Resulado longo ou filtro complexo, considere salvar em arquivo para depois ordenar.
Listar arquivos por ordem de data.
find /tmp -type f -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\n' | sort
Altere o caminho para o diretório que deseja pesquisar, também pode alterar os separadores
/tmp -type f -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\n' | sort
Redirecione o resultado para arquivo. Também faça testes com outras ferramentas como cud, sed, awk em lugar do sort.
Cópia parcial do manual do Conectiva 10 (mand find), tópico sobre printf
-printf format Verdadeiro; lista format na saída padrão, interpretando `\' como caracter de fuga e `%' como diretivas. Largura de campos e pre- cisão podem ser especificadas de forma similar à função `printf' da linguagem C. Diferentemente de -print, -printf não adiciona um caracter de nova linha ao final da cadeia de caracteres. O caracter de fuga e as diretivas são: \a Campainha de alarme. \b Retorno. \c Para a impressão deste formato imediatamente e descarrega a saída. \f Alimentação de formulário. \n Nova linha. \r Avanço e retorno de linha. \t Tabulação horizontal. \v Tabulação vertical. \\ Um literal de barra reversa (`\'). Um caracter `\' seguido por outro é tratado como um caracter comum, sendo que ambos serão impressos. %% Um sinal de percentual. %a Data e hora do último acesso ao arquivo no formato retor- nado pelo função C `ctime'. %Ak Data e hora do último acesso em um formato especificado em k, o qual é, ou `@' ou uma diretiva para a função `strftime' da linguagem C. Os valores possíveis em k estão listados abaixo; alguns deles podem não estar disponíveis em todos os sistemas, devido às diferenças da função `strftime' entre eles. @ segundos desde 1 de Janeiro de 1970, 00:00 GMT. Campos: H hora (00..23) I hora (01..12) k hora ( 0..23) l hora ( 1..12) M minutos (00..59) p AM ou PM r hora, 12-horas (hh:mm:ss [AP]M) S segundos (00..61) T hora, 24-horas (hh:mm:ss) X representação local de horário (H:M:S) Z zona de horário (por exemplo, EDT), ou nada se nenhuma zona de horário for determinada. Campos da data: a abreviatura local dos dias da semana (Dom..Sab) A nome completo do dia da semana, de tamanho variável (Domingo..Sábado) b nomes dos meses abreviados (Jan..Dez) B nomes dos meses completos com tamanho variável (Janeiro..Dezembro) c data e horário locais (Sáb Nov 04 12:02:33 EST 1998) d dia do mês (01..31) D data (mm/dd/aa) h igual a b j dia do ano (001..366) m mês (01..12) U número da semana no ano com Domingo como o primeiro dia da semana (00..53) w dia da semana (0..6) W número da semana no ano com Segunda-feira como o primeiro dia da semana (00..53) x representação local da data (mm/dd/yy) y últimos dois dígito do ano (00..99) Y ano (1970...) %b Tamanho do arquivo em blocos de 512 bytes arredondado para cima. %c Data da última mudança de status do arquivo no formato retornado pela função `ctime' da linguagem C. %Ck Data da última mudança de status do arquivos no formato especificado por k, o qual é o mesmo que para %A. %d Profundidade dos arquivos na árvore de diretórios; zero significa que o arquivo é um argumento da linha de comando. %f Nome do arquivo com exclusão de qualquer nome de diretório (somente o último elemento). %F Tipo do sistema de arquivos em que o arquivo se encontra; este valor pode ser usado por -fstype. %g Nome do grupo de arquivos, ou a identificação numérica do grupo caso este não tenha nome. %G Identificação numérica do grupo do arquivo. %h Caminho ou diretório(s) onde o arquivo está localizado (tudo exceto o último elemento). %H Argumento da linha de comando na qual o arquivo foi encontrado. %i Número do inode do arquivo (em decimais). %k Tamanho do arquivo em blocos de 1K (arredondado para cima). %l Objeto da ligação simbólica (vazio se o arquivo não for uma ligação simbólica). %m Bits das permissões do arquivo (em octal). %n Número de ligações diretas para o arquivo. %p Nome do arquivo. %P Nome do arquivo com o nome dos argumentos da linha de comando sob a qual ele foi removido. %s Tamanho do arquivo em bytes. %t Data da última modificação do arquivo no formato retor- nado pela função `ctime' da linguagem C. %Tk Data da última modificação do arquivo no formato especi- ficado em k, o qual é o mesmo para %A. %u Nome do dono do arquivo ou a sua identificação numérica se o dono não tiver nome. %U Identificação numérica do dono do arquivo. Um caracter `%' seguido por qualquer outro caracter será descar- tado (mas o outro caracter será impresso). -prune Caso -depth não seja informado, será verdadeiro; não descendo a partir do diretório atual. Caso -depth seja informado, será falso e não terá efeito. -ls Verdadeiro; lista o arquivo atual no formato `ls -dils' na saída padrão. O contador de blocos utiliza unidades de 1 Kb, a menos que a variável de ambiente POSIXLY_CORRECT esteja configurada, neste caso a unidade será de 512 bytes.