Preciso criar um script que mostre os arquivos na mesma ordem que a pasta Downloads padrão no dock, ordenada por Data de adição, a mais nova primeiro. Não consigo encontrar a opção ls
.
Alguma outra maneira de fazer isso?
Preciso criar um script que mostre os arquivos na mesma ordem que a pasta Downloads padrão no dock, ordenada por Data de adição, a mais nova primeiro. Não consigo encontrar a opção ls
.
Alguma outra maneira de fazer isso?
Respostas:
Solução mais simples (mais rápida):
mdls -name kMDItemFSName -name kMDItemDateAdded -raw * | \
xargs -0 -I {} echo {} | \
sed 'N;s/\n/ /' | \
sort
A data adicionada é armazenada como item de metadados kMDItemDateAdded
e o mdls
comando expõe os dados de cada arquivo passado como argumento para ele.
Portanto, para despejar a data adicionada para todos os arquivos em Downloads em qualquer ordem arbitrária * expandida pelo seu shell, você pode:
mdls -name kMDItemDateAdded ~ / Downloads / *
Você precisará hackear alguma combinação de find e sed / awk / perl / o que for montar um substituto, ls
mas talvez o mdfind possa ser chamado pelo seu script, em vez de precisar reinventar ls
e analisar essa saída.
Bem, como de costume, depois de escrever a pergunta, começo a procurar conteúdo de metadados em arquivos e acabei escrevendo isso:
ls -a | \
grep -v '^\.$\|^\.\.$' | \
xargs -I {} mdls -name kMDItemFSName -name kMDItemDateAdded {} | \
sed 'N;s/\n//' | grep -v '(null)' | \
awk '{print $3 " " $4 " " substr($0,index($0,$7))}' | \
sort -r
Basicamente: 1. lista todos os arquivos 2. filtra. e .. 3. obtém o nome e a data adicionados, uma linha após a outra 4. mescla a cada duas linhas em uma linha 5. extrai a data, a hora e o nome 6. classifica-a ao contrário (como datetime é antecipado, ele classifica por data hora)
Espero que isso ajude mais alguém! :)
@bmike, na verdade, o site me impôs uma restrição para responder minha própria pergunta somente após 8 horas de publicação, devido à minha falta de reputação: D
ls -A
vez de -a
para não precisar e grep -v
para . .
..
homem sl
-U Use time of file creation, instead of last modification for sorting (-t) or long output (-l).