Estou usando o CentOS7 e quando uso o comando
cp /root/test/.* /root/test1
ele também copia ..
todos os arquivos e pastas no diretório pai da fonte.
Como evitar copiar .
e ..
?
Responder1
Não está explicitamente declarado na pergunta se você deseja copiarapenasnomes ocultos ou se deseja copiar todos os arquivos. Da mesma forma, se você deseja copiar o conteúdo de qualquer subdiretório. Vou presumir que você deseja copiarapenasnome oculto é o diretório atual (porque isso você parece querer fazer com seu comando).
Seu comando não copiaria todos os arquivos no diretório pai, a menos que você também usasse a -R
opção with cp
(ou -r
with GNU cp
) para fazer uma cópia recursiva. Sem a -R
opção, cp
reclamaria .
e ..
seria diretórios, mas não os copiaria.
No bash
shell, defina a GLOBIGNORE
variável shell para a :
lista delimitada de nomes para os quais você não deseja que o shell expanda os padrões de globbing de nome de arquivo,
GLOBIGNORE='.:..'
em seguida, copie seus arquivos,
cp /root/test/.* /root/test1
Para definir GLOBIGNORE
temporariamente, apenas para a operação de cópia, use um subshell:
( GLOBIGNORE='.:..'; cp /root/test/.* /root/test1 )
Responder2
O idioma padrão para agrupar todos os nomes que começam com um ponto, exceto .
e, ..
é .??*
. Então seu comando seria
cp /root/test/.??* /root/test1