我如何获得MV(或*通配符)来移动隐藏文件?

兰德尔·库克(Randall Cook)

我正在将主目录从旧系统迁移到新系统,我制作的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

我究竟做错了什么?

吉尔·奎诺(Gilles Quenot)

你可以这样做 :

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章