51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

linux命令:把一个目录下的文件 拷贝到多个有规范命名的文件夹下

我们在服务器操作的时候,经常用到把文件拷贝来拷贝去的,所以这个时候,您如果去宝塔管理后台去操作,慢死的,并且很卡。这个时候我们需要使用命令去操作就快很多了。

image.png

我们今天讲解两种方案,往下看。

一个文件夹拷贝到另外一个文件夹

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 个目标目录,然后再执行复制命令。

如果有任何不明白的地方,欢迎继续问我。

赞(1)
未经允许不得转载:工具盒子 » linux命令:把一个目录下的文件 拷贝到多个有规范命名的文件夹下