linux下复制当前目录下面文件到目录b的话:
cp -rf * b
这样子只能复制非隐藏文件和目录。
cp -rf .* b
因为.*包含了.和..,这样子复制会出问题,当前目录的上一层目录都可能被复制过去。
这里可以借助ls -A命令,来过滤.和..目录并且包含其他隐藏文件和目录,命令如下:
cp -rf `ls -A1 --color=never` b
-1选项,让ls一行只显示一个文件或目录名,仅是为看着舒服,这里加不加都不影响。
如果已经将非隐藏的文件或目录复制过去了,仅想复制隐藏的文件和目录,有两种方式:
- 一般可以给cp加上-u参数,这个参数只会复制目标目录下不存在的文件,
或者目标目录下存在,但当前目录下更新的文件。
即:
cp -urf `ls -A1 --color=never` b
- 可以用`ls -d .[^.]* --color=never`来得到当前目录下隐藏文件和目录,-d不展开目录显示,.[^.]*匹配当前目录下以.开头的文件和目录。
即:
cp -rf `ls -d .[^.]* --color=never` b