在终端中使用 cp 命令时如何避免复制“..”?

在终端中使用 cp 命令时如何避免复制“..”?

我使用的是 CentOS7,当我使用命令时

cp /root/test/.* /root/test1

它还复制..,复制源父目录中的所有文件和文件夹。

如何避免复制...

答案1

问题中没有明确说明是否要复制仅有的隐藏名称,或者您是否要复制所有文件。同样,是否要复制任何子目录的内容。我假设你想复制仅有的隐藏名称是当前目录(因为您似乎想要使用命令执行此操作)。

您的命令不会复制父目录中的所有文件,除非您还使用-R选项 with cp(或-rwith GNU cp)来执行递归复制。如果没有该-R选项,cp则会抱怨...是目录,但不会复制它们。

bashshell 中,将GLOBIGNOREshell 变量设置为:您不希望 shell 将文件名通配模式扩展为的 - 分隔名称列表,

GLOBIGNORE='.:..'

然后复制你的文件,

cp /root/test/.* /root/test1

要临时设置GLOBIGNORE,仅用于复制操作,请使用子 shell:

( GLOBIGNORE='.:..'; cp /root/test/.* /root/test1 )

答案2

通配以点开头的所有名称(除了.和 )的标准习惯用法...??*。所以你的命令是

cp /root/test/.??* /root/test1

相关内容