2009-10-27 19:46:06 +0000 2009-10-27 19:46:06 +0000
423
423

如何用cp复制包含隐藏文件和隐藏目录及其内容?

如何让cp -r复制绝对全部目录中的文件和目录

要求:

  • 包含隐藏文件和隐藏目录。

  • 包含上述内容的单一命令。

  • 完全不需要依赖模式匹配。我需要使用什么标志?

答案 (14)

492
492
492
2011-12-12 22:00:01 +0000

假设你创建了新的文件夹(或将要创建一个文件夹),并希望在创建文件夹后将文件复制到该文件夹

mkdir /home/<new_user>
cp -r /etc/skel/. /home/<new_user>

,这将把所有的文件/文件夹从/etc/skel递归复制到第一行已经创建的文件夹中。

281
281
281
2009-10-27 19:55:27 +0000

不要指定文件:

cp -r /etc/skel /home/user

(注意/home/user必须是不存在的,否则会创建/home/user/skel)。

95
95
95
2015-09-08 21:50:45 +0000

正确的操作方法是使用-T (--no-target-directory)选项,递归复制文件夹(没有后缀斜线、星号等),例如:

cp -rT /etc/skel /home/user

这将把/etc/skel的内容复制到/home/user中(包括隐藏文件),如果/home/user不存在,则创建-T文件夹;但是,如果/etc/skel文件夹不存在,则/home/user/skel选项会阻止/home/user的内容复制到新的&007文件夹中。

68
68
68
2013-02-06 01:14:47 +0000

bash本身就有一个很好的解决方案,它有一个shell option,你可以cpmv等:

shopt -s dotglob # for considering dot files (turn on dot files)

shopt -u dotglob # for don't considering dot files (turn off dot files)

以上的解决方案是bash的标准

注:***

shopt # without argument show status of all shell options
-u # abbrivation of unset 
-s # abbrivation of set
29
29
29
2014-02-20 13:18:25 +0000

使用rsync:

rsync -rtv source_folder/ destination_folder/

7
7
7
2014-08-28 17:46:19 +0000

rsync很好,但另一个选择:

cp -a src/ dst/

来自主帮:

-a, --archive
          same as -dR --preserve=all

   -d same as --no-dereference --preserve=links

   -R, -r, --recursive
          copy directories recursively
5
5
5
2018-06-06 16:13:41 +0000

最简单的方法是:

cp -r /etc/skel/{.,}* /home/user

{.,}*表达式包括了所有的文件和目录(也是以点开头的)。

4
4
4
2016-01-17 17:32:26 +0000

你可以使用rsync.

rsync -aP ./from/dir/ /some/other/directory/
rsync -aP ./from/dir/ username@remotehost:/some/other/directory/

你甚至可以复制到ssh

-r, --recursive
-l, --links # copy symlinks as links
-p, --perms # preserve permissions
-t, --times # preserve times
-g, --group # preserve group
-o, --owner # preserve owner
-D # --devices --specials

--delete # Delete extra files

You may want to add the -P option to your command.

--partial # By default, rsync will delete any partially transferred file if the transfer is interrupted. In some circumstances it is more desirable to keep partially transferred files. Using the --partial option tells rsync to keep the partial file which should make a subsequent transfer of the rest of the file much faster.

-P # The -P option is equivalent to --partial --progress. Its purpose is to make it much easier to specify these two options for a long transfer that may be interrupted.

你可以使用各种标志。-a, –archive # archive (-rlptgoD)

&001 Rsync man page

4
4
4
2013-05-16 08:38:46 +0000

如果你的源目录和目标目录的名称相同,即使目标目录存在,你只需输入:

cp -R /etc/skel /home/

这将把/etc/skel目录复制到/home/,包括隐藏的文件和目录。

3
3
3
2015-07-24 13:34:27 +0000

我在Goog搜索了一下,发现这个问题的解决方法很简单。

find /etc/skel/ -mindepth 1 -exec cp -r {} /home/username/ \;

&001

我试过用拖尾斜线的方法,但对我来说没有用。

2
2
2
2018-01-30 20:42:49 +0000

当我需要复制所有文件(包括.文件)到目标目录保留权限时,我的解决方法是。(如果已经存在就覆盖)

yes | cp -rvp /source/directory /destination/directory/

&001

yes是自动覆盖目标文件,r递归,v动词,p保留权限。

注意,源路径不是以/结尾(所以所有的文件/目录和.文件都被复制了)

目标目录以/*结尾,因为我们是把源文件夹的内容作为一个整体放到目标目录。

2
2
2
2015-05-12 20:00:58 +0000

请注意,有一个命令行技巧(至少在shbashksh中有效)。只需在from目录后面加上一个斜线。这将会把from目录的内容倒入to目录中(讽刺的是,我在使用rsync_的时候第一次知道这个技巧)。

1
1
1
2019-02-13 10:18:49 +0000

我看到cp并不总是复制隐藏的文件,如果你想要一个在所有linux/unix方言中都能正常工作的命令,你可以尝试使用以下命令:

cd /etc/skel
find | cpio -pdumv /home/user
-2
-2
-2
2016-12-14 21:57:06 +0000

至少从K3b 2.0.3开始,当目录被添加到项目中时,会弹出一个问题框,问你是否要包含隐藏文件……….还有一个问题会弹出,问你是否要包含链接。很好的东西!