Não tenho certeza de uma boa maneira de fazer isso diretamente usando apenas find
ou similar, mas você pode usar find
e grep
:
find -printf '%Tw:%h/%ffind -name '*.html' -type f -printf '%Tw:%h/%f$ ls -la
total 68
drwxr-xr-x 2 anthony anthony 4096 Mar 24 17:53 .
drwxrwxrwt 98 root root 61440 Mar 24 17:55 ..
-rw-r--r-- 1 anthony anthony 0 Mar 24 17:53 monday
-rw-r--r-- 1 anthony anthony 0 Mar 23 11:12 sunday
' | grep -z '^1:'
' | grep -z '^1:'
Como é find
, você pode combinar outros sinalizadores:
1:./.
0:./sunday
1:./monday
para obter apenas os arquivos que terminam com .html
.
Explicação
Aqui está o meu diretório de testes:
find -printf '%Tw:%h/%ffind -name '*.html' -type f -printf '%Tw:%h/%f$ ls -la
total 68
drwxr-xr-x 2 anthony anthony 4096 Mar 24 17:53 .
drwxrwxrwt 98 root root 61440 Mar 24 17:55 ..
-rw-r--r-- 1 anthony anthony 0 Mar 24 17:53 monday
-rw-r--r-- 1 anthony anthony 0 Mar 23 11:12 sunday
' | grep -z '^1:'
' | grep -z '^1:'
O argumento% p_de find
usa uma string de formatação. Aqui,% T significa tempo da última modificação. O -printf
significa o dia da semana, de 0 (domingo) a 6 (sábado). Você pode obter o nome com w
(abreviado: Mon) ou a
(completo: segunda-feira), mas esses são específicos de localidade. A
fornece literal :
. :
é o caminho e o nome do arquivo. %h/%f
null-separa as entradas (como -print0
faz).
Assim, imprimiremos algo como 1:./.<NULL>0:./sunday<NULL>1:./monday<NULL>
, que, se você substituir o NULL por nova linha por legibilidade tr '
, é: grep -z '^1:'
' '\n'
1:./.
0:./sunday
1:./monday
Então %code% procura itens que começam com 1 :, que é segunda-feira.