executa o comando no script em ordem alfabética

2

Estou tentando definir o timestamp de vários arquivos no meu dispositivo Android usando o adb shell.

Por um motivo ou outro toque de execução com um registro de data e hora específico, não funciona. Além disso, o agrupamento de arquivos não está funcionando no shell do busybox do Android usando o toque.

Portanto, recorri a um script de shell que executa o comando touch em todos os arquivos de uma pasta.

for file in 'ls'; do touch "$file"; done

o problema não é executar o comando em qualquer ordem específica, quando eu quero que ele seja executado em ordem alfabética inversa com a garantia de que ele será feito em série, de modo que a timestamp a.png seja sempre uma hora posterior a b.png.

Isso é possível?

    
por ScottF 05.09.2017 / 03:08

2 respostas

1

Você pode usar o toque para definir um horário no futuro.

T=$(date +%s)
for file in $(ls | sort -r); do
  touch -t $(date '+%Y%m%d%H%I.%S' --date="@$T") $file
  let T=$T+1
done

Se estiver faltando sort no dispositivo, verifique se você tem busybox instalado.

    
por 05.09.2017 / 08:21
0

Is this possible?

Sim e não. Não com alto desempenho. O ponto crítico é que você especifica "a.png timestamp é sempre um tempo mais tarde do que b.png", o que eu imagino que se relaciona com o modo como alguns Makefiles lidam com eles. O problema surge se o sistema de arquivos mantém o carimbo CTIME na resolução de um segundo. Então eu proponho isso:

for file in 'ls | sort -r'; do touch "$file"; sleep 1; done

Sim, eu sei, o sleep é bem nojento. Mas é provável que você precise que o make funcione de maneira previsível.

    
por 05.09.2017 / 03:16