Suponho que você tenha o GNU find
. Se você quiser mover arquivos ou diretórios modificados em um determinado período de tempo (por exemplo, março de 2014), faça o seguinte:
find . -maxdepth 1 \
-newermt 2014-02-28 -not -newermt 2014-04-01 \
-not -name 'build_tools' \
-exec mv {} build_tools \+
Explicação:
- encontre neste diretório, sem subdiretórios
- arquivos no intervalo entre 28 de fevereiro e 1º de abril, em que
mt
se refere ao horário da modificação. Você também pode usarct
para pesquisar pelo tempo de criação. - que não são nomeados
build_tools
- mova todos eles para
build_tools
. O\+
significa que todos os nomes de arquivos / diretórios encontrados são substituídos em{}
, em vez de um por vez. Se você quiser um de cada vez, precisará de\;
.
Algumas coisas:
-
Não analise a saída de
ls
. O formato depende do sistema operacional, e a seleção de colunas comawk
falhará se os nomes de arquivos / diretórios contiverem espaço em branco. -
Você usou
&
para concatenar comandos, mas&
apenas coloca um processo em segundo plano. Se em tudo, você deve ter usado&&
, mas, no geral, seria bastante complicado conseguir o que você quer.