我正在将主目录从旧系统迁移到新系统,我制作的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
用旧的自定义版本覆盖了new等,并且知道如何查找和移动隐藏文件是一项值得的技能。有什么建议吗?
有些答案建议您做类似的事情mv src/.* dest/
。但是,我在测试目录上尝试了此操作,但出现了错误。从...开始:
rcook$ ls -a a/ b/
a/:
. .. bar .foo
b/:
. ..
rcook$ mv a/.* b/
mv: cannot move 'a/.' to 'b/.': Device or resource busy
mv: cannot remove 'a/..': Is a directory
rcook$ ls -a a/ b/
a/:
. .. bar
b/:
. .. .foo
我究竟做错了什么?
你可以这样做 :
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
)开头,则也使用模式..?*
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句