find /path/to/search -name "*.doc" -exec cp {} /path/to/copy/to \;
Se houver muitos arquivos .doc, esta é sua melhor opção para evitar o caractere limite .
Esta é uma questão básica, mas estou tentando copiar todos os arquivos .doc que encontro em um diretório e copiá-los para outro diretório.
Eu conheço cada comando:
find -name '*.doc' .
e:
cp filename location
Como posso combinar os dois comandos?
find /path/to/search -name "*.doc" -exec cp {} /path/to/copy/to \;
Se houver muitos arquivos .doc, esta é sua melhor opção para evitar o caractere limite .
Outra possibilidade:
find /path/to/search -name \*.doc -print0 | xargs -0 cp --target-directory=/destination/path
Isso reduz o número de invocações do comando copy quando comparado ao find -exec (deve ser notavelmente mais rápido se você tiver um grande número de arquivos)
No solaris, você pode usar o seguinte:
find /path/to/search -name "*.doc" -exec cp {} /destination/directory \;
Encontre os arquivos pertencentes ao usuário kelly e copie-os para um catálogo: /opt/dir
# cd (into /path to copy files) e.g. cd /opt/
# mkdir dir (where you want to copy the files)
# find / -user kelly -exec cp -rfp {} /opt/dir/ \;
Para generalizar sua pergunta de ".doc" para ".jpg" ou outros arquivos binários de imagem, você precisaria de ferramentas adicionais de código aberto, como tagim e recordar .
tagim irá marcar suas imagens com palavras-chave (ou classificações) e então você pode classificá-las / filtrá-las usando recuperar e fluir a lista para cp
usando xargs
para conectá-los:
recollq 'ofJoe ext:jpg' | xargs cp --target-directory=~/Photos/ofJoe