cp apenas arquivos, ignorando diretórios

2

Usar o cp para copiar arquivos de um diretório que tenha um diretório vazio também resulta em um valor de retorno de erro, o que falha no meu script.

Existe uma maneira de pular os diretórios sem ter um valor de retorno de erro? Gostaria que o valor de erro refletisse qualquer erro, mas ter um diretório vazio deveria ser ignorado, sem ser relatado como um erro.

Eu poderia apenas adicionar sinalizador recursivo -r , mas e se eu simplesmente não quiser que o diretório seja copiado, mas eu faço deseja que algum erro seja relatado?

    
por eis 18.05.2016 / 11:11

1 resposta

2

Eu sugiro que você use rsync ao invés de cp, se você puder tem a opção -m que excluirá pastas vazias, exemplo:

rsync -am <origin> <destination>

Explicação do comando em explicahell.com

Estou usando a opção -a porque faz muita ação padrão, mas se você quiser também pode usar a opção -r, que irá definir o modo recursivo somente.

[ADD comment]

Eu não sei de uma maneira de fazer isso com cp, pelo menos, a página man não mostra nenhuma opção que vai fazer isso por você. Você provavelmente pode fazer uma solução mais complexa usando o comando find para localizar a lista de arquivos / diretórios a serem copiados e, em seguida, passá-los para o cp, mas isso seria muito mais complicado que o rsync. O rsync é praticamente padrão em muitos linuxes

    
por 18.05.2016 / 11:27

Tags