Não use ls
. Não é recomendado usar em tais casos. Além disso, usar grep
para filtrar de acordo com a data não é uma boa ideia. Seu nome de arquivo pode conter 2012
string, mesmo que não tenha sido modificado em 2012.
Use o comando find
e canalize sua saída.
find . -newermt 20120101 -not -newermt 20130101 -print0 | xargs -0 cp -t /your/target/directory
Aqui,
-newermt 20120101 ==> File's modified date should be newer than 01 Jan 2012
-not ==> reverses the following condition. Hence file should be older than 01 Jan 2013
-print0 and -0 ==> Use this options so that the command doesn't fail when filenames contain spaces