Vorrei prima archiviare temporaneamente l'elenco dei file e utilizzare un ciclo.
find . -mtime -90 -ls >/tmp/copy.todo.txt
Puoi leggere l'elenco, se non è troppo grande, con
for f in `cat /tmp/copy.todo.txt`;
do echo $f;
done
Nota:le virgolette attorno a cat... sono apici inversi, spesso nell'angolo in alto a sinistra della tastiera.
È quindi possibile sostituire il comando echo con un comando di copia:
for f in `cat /tmp/copy.todo.txt`;
do cp $f /some/directory/
done
Si può anche selezionare la data e l'ora esatte oltre a tornare indietro di un certo numero di giorni:
cp `find . -type f -newermt '18 sep 2016 20:05:00'` FOLDER
Quanto sopra copia tutti i file nella directory che sono stati creati dopo il 18 settembre 2016 20:05:00 al FOLDER
(tre mesi prima di oggi :)
Fai attenzione al simbolo del comando find. non questo:'
È questo, un apice inverso:`
La selezione della data è con questo:'
Se hai file con spazi, nuove righe, tabulazioni o caratteri jolly nei loro nomi, puoi utilizzare una delle soluzioni di Stéphane Chazelas. Il primo è per GNU, e il secondo è per GNU o alcuni BSD:
find . -type f -newermt '18 sep 2016 20:05:00' -exec cp -t FOLDER {} +
find . -type f -newermt '18 sep 2016 20:05:00' -exec sh -c 'cp "[email protected]" FOLDER' sh {} +
Usa questo comando:
for i in `ls -lrt | grep "jul" | awk '{print $9}' `; do cp $i* /some/folder/; done
Usa il -exec
opzione per find
:
find . -mtime -90 -exec cp {} targetdir \;
-exec
copierebbe ogni risultato restituito da find
nella directory specificata (targetdir
nell'esempio precedente).