LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 510|回复: 4

cp、mv 等命令如何表示目录中的所有内容

[复制链接]
发表于 2012-2-23 14:29:18 | 显示全部楼层 |阅读模式
rsync 在指定复制源时,路径末尾是否有“/”表示不同的含义。
即,不存在时表示目录本身及其下所有内容;存在时则仅表示其下所有内容而不包括该目录本身。

FreeBSD 的 cp、 mv 等与 rsync 风格一致。但 GNU 的 cp、 mv 风格不同,路径末尾是否有“/”竟然意思相同,很无语。
cp 我找到了,用一点表示,例如: cp  /home/.  /mnt,很隐蔽,手持上并未见着说明。
mv 目前尚不清除,求解释。
发表于 2012-2-24 01:05:06 | 显示全部楼层
在freebsdchina看到过关于这方面的讨论最终结果好像是gun cp,mv无法达到类似BSD mv cp 来复制移动目录下所有.file file,竟然在这里发现了.
刚才找了半天也没找到mv如何达到类似效果,man也没介绍。 搂主cp /home/. /mnt用法在那里找到的?
回复 支持 反对

使用道具 举报

发表于 2012-2-24 11:05:40 | 显示全部楼层
貌似在FreeBSDchina的那个讨论帖中有楼主的身影。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-24 16:05:05 | 显示全部楼层
哈哈!是的, FreeBSDChina 有我的身影, GNU cp 那招也是在那贴中学到的。
只是又碰到 mv 有这需求才又想起这个问题。
不过,查到 bash 的另解法。
shopt -s dotglob 临时开启该选项,可使星号匹配包括点开头的文件。
用完了再关闭 shopt -u dotglob。
不过,要 shell 负责的话,用 .[^.]* * 更方便,比开启再关闭某选项而言,比如
  1. mv /home/.[^.]* /home/* /mnt
复制代码
回复 支持 反对

使用道具 举报

发表于 2012-2-24 21:14:15 | 显示全部楼层
一般先用cp,再用rm,来代替mv操作;
mv过程中万一有中断因素发生(如断电等)是挺危险的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表