Com um "L"
cp -r *L destination
Sem um "L"
cp -r *[^L] desyination
Eu tenho uma estrutura de pastas assim:
MAT11NA_09_XX_XX_XXX
MAT11NA_09_XX_XX_XXXL
MAT11NA_11_XX_XX_XXX
MAT11NA_11_XX_XX_XXXL
MAT11NA_10_XX_XX_XXX
MAT11NA_10_XX_XX_XXXL
Eu quero copiar deste servidor para outro apenas a pasta MAT11NA_09_XX_XX_XXX
, mas não MAT11NA_09_XX_XX_XXX
L . Quando eu terminar com isso, quero copiar MAT11NA_09_XX_XX_XXX
L , mas não MAT11NA_09_XX_XX_XXX
.
Esta parte MAT11NA_09_
não muda, o L no final também não muda.
O mesmo para o resto das pastas ...
Como faço isso na linha de comando do Unix / Linux?
Obrigado.
Com um "L"
cp -r *L destination
Sem um "L"
cp -r *[^L] desyination
Eu sei que é estúpido, mas pelo menos é direto.
Isto irá copiar todos os arquivos / diretórios que terminam com L:
cp 'ls | grep -E 'L$'' DEST
Isso copiará todos os arquivos / diretórios NÃO terminando com L:
cp 'ls | grep -vE 'L$'' DEST
Substitua DEST pelo seu destino.
Para aqueles que você quer o L, faça:
scp -r MAT*L destserver:/whatever/
Para aqueles que não têm L, você quer Globs estendidos com bash:
shopt -s extglob
scp -r ./!(MAT*L) destever:/whatever/
Eu não testei isso com scp, mas isso é uma maneira de fazer isso. Você também pode considerar usar o comando find com algo parecido com (para aqueles que não são com L).
find . ! -iname 'MAT*L' ! -iname '.*' -print0 | xargs -0 tar zcf foo.tar.gz
e depois copie o arquivo tar.
Ok, eu tentei todos eles.
" scp -r MAT*L destserver:/whatever/
" - este parece estar funcionando.
shopt extglob
scp -r ./!(MAT*L) destever:/whatever/
Para este eu executei o comando " shopt extglob
", depois fiz a cópia. Mas eu recebi esse erro " -bash: !: event not found
" ... então, não está funcionando.
Eu também tentei a primeira resposta ... A estrutura da pasta é mais ou menos assim:
folder1
MAT11NA_09_XX_XX_XXX
MAT11NA_09_XX_XX_XXXL
MAT11NA_11_XX_XX_XXX
MAT11NA_11_XX_XX_XXXL
MAT11NA_10_XX_XX_XXX
MAT11NA_10_XX_XX_XXXL
Eu quero pegar MAT11NA_09_XX_XX_XXX
pastas e colocar em uma pasta em outro servidor.
Então eu quero pegar a pasta MAT11NA_09_XX_XX_XXXL
e colocar em outra pasta em outro servidor.
Então ... Eu quero pegar MAT11NA_11_XX_XX_XXX
pastas e colocar em uma pasta (diferente da pasta onde eu coloco MAT11NA_09_XX_XX_XXX
) em outro servidor.
O mesmo para MAT11NA_11_XX_XX_XXXL
...
Eu não quero colocar TODAS as pastas L em uma pasta de outro servidor e não quero colocar TODAS as pastas não-L em outra pasta de outro servidor.
Espero que você entenda desta vez, desculpe. Obrigado.
UPDATE
Ok, depois da última resposta estou usando isso e parece que eles estão trabalhando:
scp -r MAT11NA_09_*L contentuser@/destination
scp -r MAT11NA_09_*[^L] contentuser@/destination