我如何cp -r
复制绝对全部目录中的文件和目录
要求:
- 包括隐藏文件和隐藏目录。
- 成为一个带有标志的单一命令来包含上述内容。
- 根本不需要依赖模式匹配。
我的丑陋但有效的黑客方法是:
cp -r /etc/skel/* /home/user
cp -r /etc/skel/.[^.]* /home/user
如何在不使用模式匹配的情况下用一个命令完成所有这些操作?我需要使用什么标志?
答案1
不要指定文件:
cp -r /etc/skel /home/user
(请注意,/home/user
一定不能存在,否则将创建/home/user/skel
。)
答案2
假设你创建了新文件夹(或将要创建一个),并希望在创建文件夹后将文件复制到该文件夹
mkdir /home/<new_user>
cp -r /etc/skel/. /home/<new_user>
这会将所有文件/文件夹从中递归复制/etc/skel
到第一行创建的已经存在的文件夹中。
答案3
正确的方法是使用该-T (--no-target-directory)
选项,并递归复制文件夹(不带尾随斜杠、星号等),即:
cp -rT /etc/skel /home/user
这会将 的内容复制/etc/skel
到/home/user
(包括隐藏文件),/home/user
如果文件夹不存在,则创建该文件夹;但是,如果文件夹存在,该-T
选项会阻止将 的内容/etc/skel
复制到新文件夹。/home/user/skel
/home/user
答案4
使用 rsync:
rsync -rtv source_folder/ destination_folder/