📅  最后修改于: 2023-12-03 14:40:14.387000             🧑  作者: Mango
在Bash中使用cp命令可以将文件或目录复制到指定位置,基本语法为:cp [options] source_file target_directory
其中,[options]
表示可选的选项,其中有一个常用的选项是-r
或-R
,表示递归地复制目录和子目录。但是,有时候我们需要排除某些文件或目录,这时候就需要使用--exclude
选项来实现。
--exclude=PATTERN
选项是用来告诉cp命令在复制文件或目录时排除匹配PATTERN
的文件或目录。PATTERN
可以是一个文件名、一个通配符或一个正则表达式。
例如,我们需要将一个目录/home/user/demo
下的所有文件和子目录复制到目录/tmp
下,但是我们想排除掉所有以.log
结尾的文件,我们可以使用如下命令:
cp -r --exclude="*.log" /home/user/demo /tmp/
--exclude
选项可以一次排除多个文件或目录,例如:
cp -r --exclude="*.log" --exclude="*.txt" /home/user/demo /tmp/
这样就会排除以.log
和.txt
结尾的文件。
下面是一个演示示例:
# 创建一个目录并在里面创建一些文件和子目录
mkdir demo
touch demo/file1.txt
touch demo/file2.txt
touch demo/file3.log
mkdir demo/subdir1
touch demo/subdir1/file4.txt
touch demo/subdir1/file5.log
mkdir demo/subdir2
touch demo/subdir2/file6.txt
# 复制目录并排除掉所有以.log结尾的文件
cp -r --exclude="*.log" demo /tmp/
# 查看目标目录结构
ls -R /tmp/demo
ls -R /tmp/demo/subdir1
ls -R /tmp/demo/subdir2
以上命令会将demo
目录复制到/tmp
目录下,但是会排除掉所有以.log
结尾的文件。我们可以通过ls
命令来确认复制结果和目录结构是否正确。
cp
命令是一个非常强大的文件拷贝命令,使用--exclude
选项可以方便地排除文件或目录。要注意PATTERN
的正确使用,以及通配符和正则表达式的区别。同时,也可以结合其他命令和选项来实现更加复杂的操作。