formato de comando stat para anexar '/' ao nome do arquivo se for diretório e remover "./" da frente

formato de comando stat para anexar '/' ao nome do arquivo se for diretório e remover "./" da frente

Com o seguinte comando, consegui listar todos os diretórios relativos ao diretório atual junto com a época da última modificação:

find . -exec stat -c '%n: %Y' {} \;

a saída é mais ou menos assim:

.: 1569247414
./a_file.txt: 1561624333
./some_folder: 1561624645
./some_folder/some_file.txt: 1561624645
./some_folder/another_file.txt: 1536557809

Como eu poderia me livrar do "./" que aparece no início de cada entrada e adicionar um '/' se for um diretório?

Como bônus, livrar-se da primeira entrada '.' que é apenas a pasta atual seria bom.

Saúde

Responder1

  • Adicione -mindepth 1para se livrar do .que é profundidade == 0
  • Alternativa: usar find *em vez defind .
  • Separe arquivos de pastas com-type d ... -or -type f ...
  • Use +em vez de \;para enviar vários arquivos para stat; ele aguenta e será muito mais rápido!

find * \
-type d -exec stat -c '%n/: %Y' {} + \
-or -type f -exec stat -c '%n: %Y' {} +

MAS...

Você não precisa -exec statde nada!

  • Use finds bultin -printfpara imprimir a data da última modificação ( %Csseria equivalente a stat's %Y).
  • -printf '%P'em vez de %ptambém permitirá que você se livre ./do início de cada nome de arquivo.

find . -mindepth 1 \
-type d -printf '%P/: %Cs\n' \
-or -type f -printf '%P: %Cs\n'

Saída:

a_file.txt: 1561624333
some_folder/: 1561624645
some_folder/some_file.txt: 1561624645
some_folder/another_file.txt: 1536557809

informação relacionada