如何获取mv(或*通配符)来移动隐藏文件?

Modified on: Sat, 09 Jun 2018 00:38:23 +0800

我正在将我的主目录从旧系统迁移到新系统,我制作的tarball包含所有内容,包括.bashrc等隐藏文件。但是,当我将解压缩的tarball(在/ tmp中)的内容移动到我的新主目录时,隐藏文件不会复制(mv /tmp/home/rcook/* /home/rcook/)。我怎样才能让mv移动它们?

实际上,我认为问题不在于mv,而在于bash的全局。如果我这样做:

mkdir a
mkdir b
touch a/.foo
touch a/bar
mv a/* b/
ls -a a/ b/

我明白这一点:

a/: . .. .foo b/: . .. bar

a/.foo没有移动。那么如何才能获得*通配符来查找隐藏文件?

是的,我想我可以将tarball直接解压缩到我的主目录,但tarball解压缩到home/rcook/...,我想确保覆盖新的.bashrc等,使用旧的自定义版本,并且知道如何查找和移动隐藏文件是一项有价值的技能。建议?


有些答案建议做像mv src/.* dest/这样的事情。但是,我在我的测试目录上尝试了这个并且出错了。从:

开始

a/:
.  ..  .foo

b/:
.  ..  bar

我做错了什么?

最佳答案

你可以这样做:

shopt -s dotglob
mv /tmp/home/rcook/* /home/rcook/

你可以把

shopt -s dotglob

在你的~/.bashrc中,如果你想让它成为默认值。

请参阅http://mywiki.wooledge.org/glob


复制点文件的另一种方法:

mv /tmp/home/rcook/.[!.]* /home/rcook/

不要使用模式..*,因为它匹配..(指向父目录的指针)。如果有名称以两个点开头的文件(..something),也可以使用模式..?*


相关问答

添加新评论