Você pode usar bash
com a opção globstar
ativada como no script a seguir:
#!/bin/bash
shopt -s globstar
for i
do for k in **/"$i"*/
do stat -c "the folder %n was modified on %y" "$k"
done
done
Salve como script
, torne-o executável com chmod +x script
e chame da forma que você quiser:
bash /path/to/script testRegex Pub
Observe que isso pesquisará, por exemplo, Pub*
, se você realmente deseja corresponder a *Pub*
, altere **/"$i"*/
para **/*"$i"*/
. Se você quiser reduzir o timestamp, tente adicionar | sed 's/:[^:]*$//'
ao final da linha do stat
. Você também deve tentar %N
em vez de %n
, especialmente quando se trata de nomes de diretório com espaços em que esse formato é preferível.
Se você quiser um controle mais refinado sobre o formato de data, use date
e substitua a linha do stat
pelo seguinte:
do date -d@$(stat -c%Y "$k") +"the folder $k was modified on %b %d %R"
Você pode usar as sequências de formato date
usuais explicadas em man date
, essa aqui imprime, por exemplo. May 15 01:19
conforme solicitado.
Por último, mas não menos importante, para imprimir bastante a saída de qualquer uma das opções acima, você pode inserir uma tabulação após o nome do diretório e usar column
da seguinte forma:
#!/bin/bash
shopt -s globstar
for i
do for k in **/"$i"*/
do date -d@$(stat -c%Y "$k") +"the folder $k%twas modified on %b %d %R"
done
done | column -ts$'\t'
Exemplo de execução
$ tree
.
├── 1
│ └── 1
│ └── 1
├── 1something
└── 2
└── 1
$ bash -O globstar -c 'for i; do for k in **/"$i"*/; do stat -c "the folder %n was modified on %y" "$k"; done; done' _ 1
the folder 1/ was modified on 2018-06-07 09:45:28.098693507 +0200
the folder 1/1/ was modified on 2018-06-07 09:45:28.098693507 +0200
the folder 1/1/1/ was modified on 2018-06-07 09:45:28.098693507 +0200
the folder 1something/ was modified on 2018-06-07 09:55:36.066531665 +0200
the folder 2/1/ was modified on 2018-06-07 09:45:28.098693507 +0200
$ bash -O globstar -c 'for i; do for k in **/"$i"*/; do stat -c "the folder %n was modified on %y" "$k" | sed 's/:[^:]*$//'; done; done' _ 1
the folder 1/ was modified on 2018-06-07 09:45
the folder 1/1/ was modified on 2018-06-07 09:45
the folder 1/1/1/ was modified on 2018-06-07 09:45
the folder 1something/ was modified on 2018-06-07 09:55
the folder 2/1/ was modified on 2018-06-07 09:45
$ bash -O globstar -c 'for i; do for k in **/"$i"*/; do date -d@$(stat -c%Y "$k") +"the folder $k was modified on %b %d %R"; done; done' _ 1
the folder 1/ was modified on Jun 07 09:45
the folder 1/1/ was modified on Jun 07 09:45
the folder 1/1/1/ was modified on Jun 07 09:45
the folder 1something/ was modified on Jun 07 09:55
the folder 2/1/ was modified on Jun 07 09:45
$ bash -O globstar -c 'for i; do for k in **/"$i"*/; do date -d@$(stat -c%Y "$k") +"the folder $k%twas modified on %b %d %R"; done; done | column -ts'"$'\t'" _ 1
the folder 1/ was modified on Jun 07 09:45
the folder 1/1/ was modified on Jun 07 09:45
the folder 1/1/1/ was modified on Jun 07 09:45
the folder 1something/ was modified on Jun 07 09:55
the folder 2/1/ was modified on Jun 07 09:45