Como evitar copiar “..” ao usar o comando cp no terminal?

Como evitar copiar “..” ao usar o comando cp no terminal?

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 -Ropção with cp(ou -rwith GNU cp) para fazer uma cópia recursiva. Sem a -Ropção, cpreclamaria .e ..seria diretórios, mas não os copiaria.

No bashshell, defina a GLOBIGNOREvariá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 GLOBIGNOREtemporariamente, 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

informação relacionada