Tenho um grande número de fotos de um disco rígido antigo que estou tentando organizar. Se eu executar ls -l
, percebo que todos esses arquivos têm uma data de criação de 2012 ou antes. Idealmente, gostaria de movê-los para o segundo disco rígido do meu computador, que não está configurado para ser montado automaticamente. De preferência, eu poderia fazer isso tudo como um lote com alguns comandos vinculados. Até agora, eu tenho o ls -l | grep -i 2012
que cospe apenas os arquivos com 2012 na data fornecida por ls -l
. Agora, o truque seria incluir cp
todos esses arquivos no novo diretório. Não sei para onde ir em seguida, porque cada arquivo teria que ser copiado. Qual seria o meu próximo conjunto de comandos?
fonte
Se você tiver arquivos mais recentes no disco antigo que deseja ignorar, eu continuaria assim
Aqui estão exemplos de comandos para isso, que assumem que você deseja manter qualquer hierarquia de diretórios do disco antigo no novo (
cpio
é um comando de cópia semelhantetar
oupax
):fonte
Acho que talvez esse problema seja o mesmo que o seu, você também pode verificar isso: Criar subdiretórios e organizar arquivos por data
Escrevo este novo script com base na primeira resposta dessa questão:
escreva esse script em um arquivo nomeado
copy.sh
em seu diretório antigo.substitua o
/your/new/directory
caminho do seu novo diretóriotorne este arquivo executável com
chmod +x copy.sh
então execute este arquivo
./copy.sh
fonte
2015
diretório.Você provavelmente deve usar uma ferramenta de lote para operações em lote. Isso geralmente implica a leitura / gravação de todos os registros em um único fluxo, em vez de, por exemplo, invocar um
cp
processo separado para cada arquivo copiado.Já existe uma
cpio
resposta escrita aqui, a qual, considerando apenas as opções já fornecidas, é provável que eu escolha. No entanto, ocpio
formato foi aprimorado e dobrado nopax
formato de arquivo padronizado desde o auge. O mesmo vale paratar
.Um POSIX estritamente
pax
provavelmente não fornecerá nenhuma opção para filtrar diretamente os membros do arquivo com base nos tempos de modificação do arquivo - embora o padrão especifique o%T
modificador de formato no modo de lista. Ainda assim, apax
implementação mais comumente conhecida - que é a versão BSD mantida pelo mirabilos - estende isso para um switch CLI diretamente acessível.Por exemplo, para copiar apenas todos os arquivos na árvore com raiz em
./
que foram modificada pela última vez antesccyymmddHHMM
de/target/dir
você pode fazer:Para evitar a recorrência em diretórios filhos, faça o seguinte:
Veja a
man
página para mais informações.fonte
pax
, mastar
ecpio
ainda me ficar bem. +1pax
formato de arquivo real (que é uma extensão do formato ustar ) , opax
utilitário especificado para POSIX lê / grava os formatos cpio, pax e ustar. Como todos os três tipos de arquivo são basicamente apenas meios diferentes de codificar os metadados para muitos arquivos, juntamente com os dados reais desses arquivos em um único fluxo, não é muito difícil. Uma vez eu escrevishitar
- que eram apenas algumas linhas de shell-script para - principalmentedd
-tar
devs de bloco em tempo real com base nas especificações do POSIX.cpio -H ustar
...