Copie os arquivos em um diretório para outro diretório

3

novo no Ubuntu e eu continuo lendo as coisas postadas, mas não está funcionando para mim, ajude !!! Estou sentindo falta de algo que alguém possa ajudar. Eu estou tentando copiar arquivos de uma pasta para outra. Quando faço isso, copia todas as pastas para a pasta. O problema é que eu não queria cópias de todas as pastas Eu só queria que os arquivos em uma pasta para copiar para outra pasta:

cp -a /home/troy/Downloads/ . /home/troy/.gs/
    
por tbuilt62 24.10.2013 / 03:55

3 respostas

2

Abra o terminal e execute:

find /home/troy/Downloads/ -type f -exec cp {} /home/troy/.gs/ \;
    
por karel 24.10.2013 / 04:01
2

Você pode usar esses comandos para copiar somente arquivos para qualquer diretório específico

Suponha que você queira copiar todos os arquivos em /home/troy/Downloads para /home/troy/.gs , em seguida:

Primeiro, vá para /home/troy/Downloads e:

find . -type f | xargs -I '{}' cp {} /home/troy/.gs

Se você quiser copiar qualquer arquivo específico, digamos *.mp3 , então você pode executar este comando:

find . -iname "*.mp3" -type f | xargs -I '{}' cp {} /home/troy/.gs
    
por Saurav Kumar 24.10.2013 / 04:04
0

find é um comando incrivelmente poderoso, mas não consigo lembrar como usá-lo.

Eu percebi que, em primeiro lugar, eu não sabia a resposta para sua pergunta, mas achei que o arquivo globs poderia ser útil, então aqui está o que eu tentei:

/tmp/askubuntu $ ls # notice no output because this directory is currently empty
/tmp/askubuntu $ mkdir src dest # create source and desination directories
/tmp/askubuntu $ ls # now we have the two directories we created
dest  src
/tmp/askubuntu $ cd src
/tmp/askubuntu/src $ ls # no files in src, yet
/tmp/askubuntu/src $ touch file-1 file-2 # create a couple of empty files
/tmp/askubuntu/src $ ls # now we can see the files that we created
file-1  file-2
/tmp/askubuntu/src $ mkdir dir-to-ignore # make a directory that we don't want to copy
/tmp/askubuntu/src $ ls -l # we can use 'ls -l' to view the files as well as their types. note the 'd' to the left of dir-to-ignore -- this says it is a directory
total 4
drwxr-xr-x 2 josh josh 4096 Oct 24 00:06 dir-to-ignore
-rw-r--r-- 1 josh josh    0 Oct 24 00:05 file-1
-rw-r--r-- 1 josh josh    0 Oct 24 00:05 file-2
/tmp/askubuntu/src $ cd ../dest/
/tmp/askubuntu/dest $ ls
/tmp/askubuntu/dest $ touch file-3 # make an empty file here too
/tmp/askubuntu/dest $ cd ../src/
/tmp/askubuntu/src $ ls
dir-to-ignore  file-1  file-2
/tmp/askubuntu/src $ cp * ../dest/ # copy all files from our current directory (* matches anything) to ../dest
cp: omitting directory ‘dir-to-ignore’
/tmp/askubuntu/src $ ls # our current directory is unchanged
dir-to-ignore  file-1  file-2
/tmp/askubuntu/src $ cd ../dest/
/tmp/askubuntu/dest $ ls # but we copied all of files we wanted, and nothing more
file-1  file-2  file-3

A razão para isso não é imediatamente óbvia. Se tivéssemos dado cp o -r flag (então cp -r * ../dest/ ), também teríamos copiado dir-to-ignore além de todo o seu conteúdo. Isso ocorre porque -r indica copiar diretórios recursivamente (como podemos ver digitando man cp em um terminal). Então, no seu caso, isso pode se tornar cp -a /home/troy/Downloads/* /home/troy/.gs/ . Ou você pode omitir o -a se desejar.

Eu não afirmo que depender desse comportamento um pouco estranho de cp (não copiar diretórios sem o -r flag, mas também não dar um erro) é a coisa certa a fazer. Meu objetivo era ilustrar como eu poderia tentar construir uma solução para esse problema e ilustrar alguns comandos ao longo do caminho.

Talvez você ache útil, talvez não, talvez já saiba de tudo isso. Apenas meus dois centavos. Mas, independentemente disso, acho que é bom saber como / por que as coisas funcionam e ser capaz de explorar soluções por conta própria.

    
por Josh 24.10.2013 / 06:44