$ cp employee/*/* /home/employee_files/
Eu tenho uma pasta chamada "employee" e dentro dessa pasta existem subpastas com cada nome de funcionário.
employee
>> amar
>> akbar
>> anthony
Cada uma dessas pastas contém 1 ou 2 arquivos. Existem cerca de 50 funcionários. Eu quero copiar todos esses arquivos em uma nova pasta "/ home / employee_files" sem as subpastas. Em outras palavras, todos os arquivos devem estar disponíveis quando eu listar "ls / home / employee_files"
find /home/attachments/ -type f -exec cp {} /home/attachments_all/ \;
Tenha em atenção que, se dois ficheiros tiverem o mesmo nome, só terminará com um deles.
Uma abordagem alternativa é copiar arquivos para um nome que seja um hash de seus conteúdos.
#!/bin/bash
cp "$1" /home/attachments_all/'sha1sum "$1" | cut -f 1 -d ' ''
Isso fornecerá uma cópia exclusiva de cada arquivo, independentemente do nome. Você pode alterar o script para fornecer um arquivo de índice.
find /home/attachments/ -name "*.*" -exec scp {} /home/attachments_all/ \;
Tags cp linux shell-scripting