A maneira como estou lendo esta pergunta é que você gostaria de criar a saída formatada em CSV, com uma lista de arquivos. Para outra interpretação, veja o final desta resposta.
Aqui está um script de shell que fará isso. Ele usa a versão do Linux de stat
para obter o timestamp da última modificação.
#!/bin/sh
echo "PATHNAME,TIMESTAMP"
stat -c '"%n",%y' "$@"
Após a saída de um cabeçalho, esse script simplesmente chama stat
com os nomes de caminho mencionados na linha de comando para obter o registro de data e hora da última modificação (consulte o manual stat
em seu sistema para descobrir como alterar isso). Imprime o nome do caminho (cotado) e o registro de data e hora.
Você usaria isso como
sh script.sh PATTERN >outputfile
Por exemplo:
$ sh script.sh *.log* *.tar >file.cvs
$ cat file.cvs
PATHNAME,TIMESTAMP
"dsmerror.log",2018-07-17 13:00:02.911711652 +0200
"dsminstr.log",2018-07-17 13:00:04.079726608 +0200
"dsminstr.log.bak",2018-05-13 18:00:03.231791181 +0200
"dsminstr.log.lock",2018-07-17 13:00:04.079726608 +0200
"archive_20170823-old.tar",2017-08-22 16:44:23.037803149 +0200
"archive_20170823.tar",2017-08-23 09:35:28.956158119 +0200
"archive_20180409.tar",2018-04-09 09:47:29.472374428 +0200
"archive-chr22.tar",2018-06-19 14:50:45.896447161 +0200
"gene_cache.tar",2018-04-25 09:44:15.518486626 +0200
Como o script é muito curto, seus comandos podem ser escritos diretamente na linha de comando. A linha de comando equivalente para o exemplo acima seria
$ { echo "PATHNAME.TIMESTAMP"; stat -c '"%n",%y' *.log* *.tar; } >file.cvs
Agora, quando tivermos este arquivo, poderemos formatá-lo bem para fins de geração de relatórios:
$ column -s, -t file.csv
PATHNAME TIMESTAMP
"dsmerror.log" 2018-07-17 13:00:02.911711652 +0200
"dsminstr.log" 2018-07-17 13:00:04.079726608 +0200
"dsminstr.log.bak" 2018-05-13 18:00:03.231791181 +0200
"dsminstr.log.lock" 2018-07-17 13:00:04.079726608 +0200
"archive_20170823-old.tar" 2017-08-22 16:44:23.037803149 +0200
"archive_20170823.tar" 2017-08-23 09:35:28.956158119 +0200
"archive_20180409.tar" 2018-04-09 09:47:29.472374428 +0200
"archive-chr22.tar" 2018-06-19 14:50:45.896447161 +0200
"gene_cache.tar" 2018-04-25 09:44:15.518486626 +0200
Isso funciona, a menos que qualquer um dos nomes de caminho contenha uma vírgula.
Para formatar corretamente isso com um analisador de CSV, que também lidaria com nomes de caminho contendo vírgulas:
$ csvlook file.csv
| PATHNAME | TIMESTAMP |
| ------------------------ | ----------------------------------- |
| dsmerror.log | 2018-07-17 13:00:02.911711652 +0200 |
| dsminstr.log | 2018-07-17 13:00:04.079726608 +0200 |
| dsminstr.log.bak | 2018-05-13 18:00:03.231791181 +0200 |
| dsminstr.log.lock | 2018-07-17 13:00:04.079726608 +0200 |
| archive_20170823-old.tar | 2017-08-22 16:44:23.037803149 +0200 |
| archive_20170823.tar | 2017-08-23 09:35:28.956158119 +0200 |
| archive_20180409.tar | 2018-04-09 09:47:29.472374428 +0200 |
| archive-chr22.tar | 2018-06-19 14:50:45.896447161 +0200 |
| gene_cache.tar | 2018-04-25 09:44:15.518486626 +0200 |
csvlook
faz parte do csvkit
, um kit de ferramentas Python para trabalhar com arquivos CSV.