find-command: cerca con il tempo creato
Domanda
Come posso trovare le cose create " 30 lug 04: 37 " e spostarli in / tmp? Qualcosa non va:
find . -ctime "0037043007" -exec mv {} /tmp +
Soluzione
Consulta il manuale GNU find (e anche le formati di input di tempo ).
In particolare, l'opzione -newerct '30 -Jul-2009 04:37 '
sembra fare la maggior parte di ciò che vuoi.
L'unico inconveniente è che la pagina man implica che funziona per file strettamente più recenti del tempo dato. Ciò suggerisce che è necessario utilizzare il tempo assoluto:
1248957000 = 2009-07-30 05:30:00 (TZ = US/Pacific = UTC-07:00)
-newerct @1248957000
Ciò lascia ancora il problema di come gestire la semantica strettamente maggiore della
-newerct @1248956999 -a ! -newerct @1248957001
Funziona, ma è indiscutibilmente disordinato (e presuppone che tu abbia gli strumenti per ottenere il timestamp Unix da un valore data / ora).
È necessaria una versione abbastanza nuova di find
affinché funzioni (GNU findutils 4.4.2 è attuale).
Altri suggerimenti
for file in $(ls -lR | grep "Jul 14" | awk '{print $9}')
do
mv $file /tmp
done
Non sono sicuro del motivo per cui stai usando " exec {} +
" sintassi ... Che ne dici di questo:
find . -ctime "0037043007" -exec mv \{} /tmp/ \;