Copiando arquivos com base em uma condição

1

Aqui está o problema que estou tentando resolver:

  • Digamos que eu tenha um diretório "A", contendo alguns arquivos e alguns outros diretórios.
  • Eu quero copiar todos os arquivos diretamente no diretório A para o diretório B.
  • Eu quero recursivamente copiar todas as pastas dentro da pasta A para a pasta C.

Qual é a maneira mais curta e menos específica de plataforma para realizar isso no UNIX / Linux?

    
por user2398029 04.03.2012 / 08:43

2 respostas

5

Provavelmente algo assim

find A -type f -maxdepth 1 -exec cp {} B/ \;

e

find A -type d -maxdepth 1 -mindepth 1 -exec cp -r {} C/ \;

Em que -type é um sinalizador, determinando o tipo que você está procurando (arquivo ou diretório), - maxdepth em que profundidade o diretório e -exec para executar um comando no resultado.

    
por 04.03.2012 / 09:15
1

Você pode usar cp para copiar os diretórios, dando um padrão glob terminando em / ,

cp -a A/*/ C/

e você pode copiar arquivos sem a opção -a (semelhante a -r )

cp A/* B/

embora este último comando daria erros inofensivos em diretórios não copiados.

    
por 04.03.2012 / 09:53

Tags