Eu tenho um diretório que contém várias outras pastas que contêm arquivos CoffeeScript / JavaScript. Consigo compilar os arquivos CoffeeScript em uma nova pasta com a mesma estrutura de pastas.
O que eu quero fazer é copiar todos os arquivos * .js na pasta de origem para a pasta de destino recursivamente. Também não quero substituir nenhum arquivo que já esteja presente na pasta de destino. Alguma idéia de como fazer isso?
Tentei usar cp -n source/**.js desination/
e cp -Rn source/**.js desination/
depois de examinar outra pergunta semelhante, mas ela não parece estar funcionando.
Alguma idéia de como fazer isso?
linux
file-transfer
cp
AlbertEngelB
fonte
fonte
Respostas:
Você pode usar o rsync (também copia localmente)
-r
recursão em diretórios,--ignore-existing
ignorar arquivos existentes no destino,include
eexclude
significam: incluir todos os diretórios, incluir todos os arquivos * .js, excluir o restante; a primeira inclusão é necessária; caso contrário, a exclusão final também excluirá os diretórios antes que o conteúdo seja verificado.Por fim, você pode adicionar um
-P
se quiser assistir ao progresso, um--list-only
se quiser ver o que ele copiaria sem realmente copiar e um-t
se quiser preservar os carimbos de data e hora.Isso não está relacionado, mas aprendi o comando rsync recentemente, quando mudei 15 anos de documentos de uma partição para outra. Confiante de que meus arquivos estavam lá, limpei a partição antiga e coloquei outras coisas lá; Percebi depois que perdi todos os carimbos de data e hora e descobri a bandeira -t. Só queria compartilhar minha angústia: '(
fonte
rsync
aparentemente é a bomba.Isso também é possível usando o cp. Veja aqui:
xxx = origem
aaaa = destino
v = detalhado
n = sem acumulador (sem substituição)
p = preservar permissões
r = recursivo
fonte
Olhando para as páginas de manual, parece que você deseja a
-n
opção.fonte
Minha distribuição não possuía trator disponível, então:
xxx = origem
aaaa = destino
v = detalhado
i = interativo (prompt para substituir) | é por isso que o comando é precedido por "echo n |"
p = preservar permissões
r = recursivo
fonte