Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 复制不包括文件的整个目录_Linux_Cp - Fatal编程技术网

Linux 复制不包括文件的整个目录

Linux 复制不包括文件的整个目录,linux,cp,Linux,Cp,我们知道,cp-r source\u dir\u new\u目录使用新名称创建源目录的副本。现在我想做同样的事情,但想排除一个特定的文件。我在这里找到了一些相关的答案,使用tar和rsync,但在这些解决方案中,我需要首先创建目标目录(使用mkdir)。 老实说,我搜索了很多,但没有找到我想要的东西。 到目前为止,我得到的最好结果是: tar -c --exclude=\*.dll --exclude=\*.exe sourceDir | tar -x -C destDir (from)尝试使

我们知道,cp-r source\u dir\u new\u目录使用新名称创建源目录的副本。现在我想做同样的事情,但想排除一个特定的文件。我在这里找到了一些相关的答案,使用tar和rsync,但在这些解决方案中,我需要首先创建目标目录(使用mkdir)。
老实说,我搜索了很多,但没有找到我想要的东西。
到目前为止,我得到的最好结果是:

tar -c --exclude=\*.dll --exclude=\*.exe sourceDir | tar -x -C destDir

(from)

尝试使用'grep-v'排除文件->

cp `ls | grep -v <exclude-file>` <dest-dir>
cp`ls|grep-v`

如果目录不是很大,我通常会这样写:

src=path/to/source/directory
dst=path/to/destination/directory
find $src -type f | while read f ; do mkdir -p "$dst/`dirname $f`"; cp "$f" "$dst/$f" ; done
在这里,我们列出了
$src
中的所有常规文件,遍历此列表,如果每个文件尚不存在(
-p
选项
mkdir
),则在
$dst
中为其创建一个目录,然后将该文件复制到该目录

上述命令将复制所有文件。最后,只需使用

find $src -type f | grep -v whatever | while ...... # same as above  

要筛选出您不需要的文件(例如,
\.bak$
\.orig$
,或任何您不想复制的文件)。

如果您有binutils,您可以使用在“复制”旁边进行筛选(并创建目录):

find\(!-name*.dll\)-a\(!-name*.exe\)\cpio-dumpv

将所有排除文件移动到主目录或其他目录,将包含所有剩余文件的目录复制到目标文件夹,然后恢复所有排除文件

#cd mydirectory
#mv exclude1 exclude2 /home/
#cp mydirectory destination_folder/
#cd /home/
#mv eclude1 exclude2 mydirectory/

这不会复制子曲面。。您需要相应地修改该命令。对不起,不理解该命令。我应该把源目录放在哪里?这里@dganesh2002将所有文件从当前目录复制到目标目录。如果没有子目录,文件名没有空格,并且当前目录中的文件数不太大,那么可以。多亏了dganesh2002和@atycnth。虽然我仍然需要自己创建dest_dir,但我喜欢这个解决方案,因为它的机制很简单,而且我很容易记住它。
#cd mydirectory
#mv exclude1 exclude2 /home/
#cp mydirectory destination_folder/
#cd /home/
#mv eclude1 exclude2 mydirectory/