Abra o terminal e execute:
find /home/troy/Downloads/ -type f -exec cp {} /home/troy/.gs/ \;
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/
Abra o terminal e execute:
find /home/troy/Downloads/ -type f -exec cp {} /home/troy/.gs/ \;
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
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.
Tags command-line