我们在服务器操作的时候,经常用到把文件拷贝来拷贝去的,所以这个时候,您如果去宝塔管理后台去操作,慢死的,并且很卡。这个时候我们需要使用命令去操作就快很多了。
我们今天讲解两种方案,往下看。
一个文件夹拷贝到另外一个文件夹
cp 用于复制文件或目录。
参数说明:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。 -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。 -f:覆盖已经存在的目标文件而不给出提示。 -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。 -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 -l:不复制文件,只是生成链接文件。
例子1:
cp flags.c flags_checkered.c
//复制 flags.c 到flags_checkered.c 文件,当前文件同属于同一目录下
例子2:
cp -r /home/user05/lab07/* /home/user05/lab09
//复制 lab07文件夹下的所有文件到 lab09 文件夹下
例子3:
cp flags.c /home/user05/lab09/flags_revised.c
//复制当前文件夹下的 flags.c 文件到 lab09 文件夹下flags_recised.c 文件
一个文件夹拷贝到多个文件夹
这个一般做站群的时候经常用到,因为有时候我们需要用到同一套模版,所以需要多个拷贝。如何操作呢?直接上命令:
for i in {1..10}; do cp -r /path/to/source/directory/* /path/to/target/directory_$i; done
解释如下:
for i in {1..10}; do 表示循环执行 10 次,每次 i 的值从 1 递增到 10。
/path/to/source/directory/* 表示复制源目录下的所有文件和子目录。
/path/to/target/directory_$i 表示将文件复制到以 directory_ 为前缀,数字从 1 到 10 的目标目录中。例如:
/path/to/target/directory_1
/path/to/target/directory_2
/path/to/target/directory_3
...
/path/to/target/directory_10
done 表示循环结束。
请确保替换 /path/to/source/directory 和 /path/to/target/directory_$i 为您实际的源目录和目标目录路径。
如果您需要创建这些目标目录,可以先运行以下命令:
for i in {1..10}; do mkdir /path/to/target/directory_$i; done
这样就可以先创建好 10 个目标目录,然后再执行复制命令。
如果有任何不明白的地方,欢迎继续问我。