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
mtse refere ao horário da modificação. Você também pode usarctpara 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 comawkfalhará se os nomes de arquivos / diretórios contiverem espaço em branco. -
Você usou
¶ 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.