No bash, preciso fazer o seguinte:
pegue todos os arquivos em um diretório
copie-os para um diretório existente
Como eu faço isso? Eu tentei cp -r t1 t2
(t1 e t2 são diretórios existentes, t1 tem arquivos), mas ele criou um diretório chamado t1 dentro de t2, não quero isso, preciso que os arquivos em t1 sejam diretamente dentro de t2. Como eu faço isso?
cp
perguntas podem ser vistas comobash
perguntas, que é uma linguagem de programação. Eu nunca vi uma pergunta Python falando sobre cópia de arquivo ser fechada.Respostas:
O que você quer é:
O ponto no final diz para copiar o conteúdo do diretório atual, não o diretório em si. Este método também inclui arquivos e pastas ocultos.
fonte
mv
. Alguem sabe por quê?Se você deseja copiar algo de um diretório para o diretório atual , faça o seguinte:
Isso pressupõe que você não está tentando copiar arquivos ocultos.
fonte
Ou se você possui diretórios dentro do dir1 que também deseja copiar
fonte
dir1/.*
não é uma boa ideia, pois copia dir1 / .. (ou seja, o pai do diretório que você está realmente tentando copiar). Ele também copia dir1 /. o que é bom, exceto que já foi (na maioria das vezes) copiado, então você está fazendo o trabalho duas vezes.dir1/.*
problema / arquivos ocultos, digitando o CD no diretório do qual deseja copiar e consultando-o como.
. Portanto, se você deseja copiar todos os arquivos, incluindo arquivos ocultos de um diretório para um diretório existente, é possível:cd [source dir]
,cp . [path to destination dir, with no trailing slash]
.Supondo que t1 seja a pasta com arquivos e t2 seja o diretório vazio. O que você quer é algo como isto:
Lembre-se de que, para o primeiro exemplo, t1 e t2 devem ser os caminhos completos ou relativos (com base em onde você está). Se desejar, você pode navegar para a pasta vazia (t2) e fazer o seguinte:
Ou você pode navegar para a pasta com arquivos (t1) e fazer o seguinte:
Nota: O sinal * (ou curinga) significa todos os arquivos e pastas. O sinalizador -R significa recursivamente (tudo dentro de tudo).
fonte
A barra final no diretório de origem altera ligeiramente a semântica, de modo que copia o conteúdo, mas não o próprio diretório. Também evita os problemas com arquivos ocultos e invisíveis que a resposta de Bertrand tem (copiar
t1/*
arquivos invisíveis, copiar `t1 / * t1 /.* 'copia t1 / .t1 / .., que você não deseja).fonte
$ mkdir t1
$ mkdir t2
$ touch t1/one
$ touch t1/two
$ touch t1/.three
$ cp -R t1/ t2
$ ls t2/
t1
(desculpe não codeformat nos comentários, versão legível em pastebin.com/yszSxV6G )Dependendo de alguns detalhes, pode ser necessário fazer algo assim:
... isso basicamente muda para o diretório SRC e o copia para o destino, depois retorna para onde você começou.
A confusão extra é lidar com alvos relativos ou absolutos.
(Isso não depende da semântica sutil do
cp
próprio comando ... sobre como ele lida com as especificações de origem com ou sem um final / / ... já que não tenho certeza de que sejam estáveis, portáteis e confiáveis, além do GNUcp
e I não sei se continuarão assim no futuro).fonte
Para dentro de algum diretório, isso será usado full, pois ele copia todo o conteúdo de "folder1" para o novo diretório "folder2" dentro de algum diretório.
$ (pwd) obterá o caminho para o diretório atual.
Observe o ponto (.) Após a pasta1 para obter todo o conteúdo dentro da pasta1
fonte