有没有一种简单的方法可以递归地将目录中的所有隐藏文件复制到另一个目录?我只想备份主目录中的所有设置文件,而不是普通文件。我试过:
cp -R .* directory
但它识别.
并..
递归复制所有非隐藏文件。有没有办法让 cp 忽略.
并..
?
答案1
我最喜欢的移动目录是:
tar cvf - . | (cd /dest/dir; tar xvf -)
它将当前目录打包到 stdout,然后通过管道将其传输到子 shell,该子 shell 首先 cd 到目标目录,然后解压 stdin。简单、直接、可扩展 - 考虑一下当您将 () 替换为 ssh 到另一台机器时会发生什么。或者回答您的问题,您可以这样做:
tar cvf - .* --exclude=\. --exclude=\.\. | (cd /dest/dir; tar xvf -)
答案2
几乎每次都可以这样解决:
cp -R .[a-zA-Z0-9]* directory
隐藏文件如果不以上述字符开头的话,是非常不常见的。
其他模式匹配可用(.??*
,.[^.]*
) - 参见注释
答案3
您可以使用rsync
。
rsync -a ./ /some/other/directory/
这将复制当前目录的内容(包括点文件,但不包括..
)
答案4
我一直使用 .??* 来查找隐藏文件,而不会出现“.”和“..”。虽然它可能会漏掉“.a”或其他东西,但我从来没有遇到过其中之一。