Ottenere tutti i file che sono stati modificati in una data specifica


20

È possibile trovare tutti i phpfile in una determinata directory che sono stati modificati in una determinata data

sto usando

find /var/www/html/dir/ -mtime -28 | grep '\.php' 

per modificare i file negli ultimi 28 giorni, ma ho bisogno solo dei file che sono stati modificati nella seguente data: 2011-02-08

Risposte:


22

Nelle versioni recenti di find(ad esempio GNU 4.4.0) è possibile utilizzare l' -newermtopzione. Ad esempio, per trovare tutti i file che sono stati modificati nel 2011-02-08

$ find /var/www/html/dir/ -type f -name "*.php" -newermt 2011-02-08 ! -newermt 2011-02-09

Inoltre, non è necessario eseguire il pipe in grep per trovare i file php perché find può farlo per te -namenell'opzione.

Dai un'occhiata a questa risposta SO per ulteriori suggerimenti: Come utilizzare 'trova' per cercare i file creati in una data specifica?


4

In modo fastidioso, non esiste alcun modo diretto con lo standard find. Le versioni recenti di findsistemi GNU (ad es. Linux non incorporato, Cygwin) e alcuni * BSD hanno opzioni tali da -newermtconfrontare una data del file con una data esplicita .

Con lo standard find, tutto ciò che puoi fare è confrontare la data del file con la data corrente ( -mtime) o con un file fisso. La data corrente in genere non è utile in questo caso (conta indietro dal momento in cui si esegue il findcomando, mentre la maggior parte delle applicazioni richiede una data di calendario). Questo ti lascia con il kludge di creare file temporanei per definire un intervallo.

touch -t 201103070000 start.tmp
touch -t 201103080000 stop.tmp
find . -newer start.tmp \! -newer stop.tmp -print
rm start.tmp stop.tmp

2

Hai già quasi il comando giusto, per le versioni findche non ti consentono di utilizzare le date:

find /var/www/html/dir/ -mtime 27 | grep '\.php'

In generale, per find- n significa meno di , n significa uguale , + n significa "più di". Tradizionale findha alcune eccezioni, ma GNU finde altre versioni più recenti come quelle su BSD / Mac OS X hanno corretto quelle. (Tienilo a mente se ti ritrovi su un Solaris o un altro sistema Unix commerciale.)


1

Con zshte puoi usare la funzioneage per stampare solo i nomi dei file che sono stati modificati in una certa data:

età di caricamento automatico
print -rl - * .php (.e: età 2011/02/08 :)

o, se si desidera cercare ricorsivamente:

età di caricamento automatico
setopt extendedglob
print -rl - ** / *. php (.e: età 2011/02/08 :)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.