
Eu tenho uma pasta Todos com
AllFolders
F1
some_file_20170315_xyz.txt
some_file_20170314_xyz.txt
....
F2
some_other_file_20170315_abc.txt
some_other_file_20170314_abc.txt
...
...
Fn
Como posso copiar todos os arquivos que correspondem a uma determinada data para uma pasta vazia diferente, para que a estrutura da pasta também seja copiada e tenha a aparência
Folder_20170315
F1
some_file_20170315_xyz.txt
F2
some_other_file_20170315_abc.txt
Responder1
Uma maneira é usar find
e cp
:
find . -iname '*20170315*' -exec cp --parents {} /tmp/Folder_20170315 \;
A pasta de destino já deve existir. Se desejar, você também pode criar um script para sua criação.
Parece que você deseja verificar o nome do arquivo, mas find
também pode ser usado para verificar a data do arquivo.
Responder2
Como cp --parents
não está disponível no Mac, usei dois comandos para resolver um problema semelhante:
find . -name '*.example' | xargs -I FOO dirname FOO | xargs -I FOO mkdir -p /new/root/directory/FOO
find . -name '*.example' | xargs -I FOO cp FOO /new/root/directory/FOO
O primeiro comando cria a árvore de diretórios. O segundo copia os arquivos.
Isso pressupõe que find
seja rápido. Se find
for um gargalo de desempenho, você desejará otimizar ainda mais. Por exemplo, você poderia mover as operações para uma função.