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.