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