Você pode usar a localização e cpio
no modo de passagem:
find image/ -mtime -365 | cpio -pd /target_dir
EDIT: remove desnecessário * do caminho de localização.
Eu quero encontrar imagens, de um diretório, que foram adicionadas no último ano e copiá-las para um novo diretório que preserve a estrutura de pastas original.
Estou usando o find, mas não está copiando nada. Existe alguma maneira que pode ser feito usando um comando de linha?
find image/* -mtime +356 -exec cp {} modified-last-year/ \;
Estou no diretório de imagens ao executar este comando e quero pesquisar apenas a pasta de imagens recursivamente.
[EDIT]
Depois das duas respostas que eu fiz seguindo.
1. find image/* -mtime +356 | cpio -pd /target_dir
Eu recebo 0 blocos.
find /full/path/to/image -mtime 365 -type f ( "-name *.jpg -o -name *.gif ) -execdir cp {} /full/path/to/image_target_dir/modified-last-year \;
Nada copiado.
E simplesmente localize para obter a contagem de arquivos com e sem -type f.
find /full/path/to/image -mtime 365 -type f -execdir cp {} /full/path/to/image_target_dir/modified-last-year \;
Eu tenho 0.
Eu pude verificar que existem arquivos no diretório de imagens e em sub-diretórios que foram adicionados no último 1 ano. de fato deve haver mais de 200 imagens.
[EDIT 2]
Eu também tenho que excluir um diretório de encontrar assim que o código a seguir funcionou bem.
Graças à primeira resposta, consegui criar isso.
find /full/path/to/image -mtime 365 -type f | wc -l
Se você já está no diretório image
, então find image/* ...
soletra o problema. Em vez disso, para caminhos relativos, use find .
(etc) onde o "." significa o diretório atual e sua árvore de subdiretórios, ou melhor ainda, usar caminhos absolutos:
$ find /full/path/to/imagedir -mtime -365 -execdir cpio -pdv {} /absolute/path/to/targetdir \;
Desde que você tenha a devida permissão para fazer isso, o acima deve copiar todos os arquivos modificados mais recentemente do que 365 * 24 horas (antes de hoje) no diretório de destino yr, preservando a estrutura de diretório.
A opção -execdir
é mais segura que -exec
, faz o mesmo, mas é executada a partir do diretório onde o arquivo selecionado é encontrado.
Você pode restringir ainda mais os arquivos sendo analisados por find, especificando as opções -type f \( "-name \*.jpg -o -name \*.gif \)
no cmd acima.
as opções do cpio são:
-p for passthrough (does not make an archive out of the set of dound files)
-d to preserve the directory structure
-v to visualize files being copied
Veja a página de manual de find
, no link para obter o% co_de completo % manual on-line, e lembre-se www.startpage.com é um amigo que não faz de você o produto quando você procura por respostas.
Tags find shell-script file-copy