一、简介
本文介绍了在linux下如何使用cp命令将一个文件复制到多个文件夹、多个文件复制到一个文件夹和多个文件复制到多个文件夹下。
二、代码
假设初始时test/文件夹的结构如下:

1. 将一个文件复制到多个文件夹
a.命令示例
将file1复制到目录des_dir1/,des_dir2/和des_dir3/下:
echo ./des_dir1/ ./des_dir2/ ./des_dir3/ | xargs -n 1 cp ./file1
该命令等效于以下命令:
cp ./file1 ./des_dir1/
cp ./file1 ./des_dir2/
cp ./file1 ./des_dir3/
运行后test/文件夹结构如下:

b.命令解释
-
echo ./des_dir1/ ./des_dir2/ ./des_dir3/echo命令将des_dir1,des_dir2和des_dir3给输出流(标准输出) -
||管道符,将echo命令的输出给下一个命令,即给xargs。 -
xargs -n 1xargs命令将接收到的输入(echo的输出即xargs的输入),作为参数输出给下一个命令,即cp命令。xargs默认将输出的参数添加到下个命令的最后。-n 1指定了xargs每次传给命令cp一个参数。 -
cp ./file1cp命令将文件./file1复制到xargs给的参数路径下,即./des_dir1/,./des_dir2/和./des_dir3/下。
2. 将多个文件复制到一个文件夹
a.命令示例
将file1,file2和file3复制到目录des_dir1/下:
cp -t ./des_dir1/ ./file1 ./file2 ./file3
该命令等效于以下命令:
cp ./file1 ./des_dir1/
cp ./file2 ./des_dir1/
cp ./file2 ./des_dir1/
运行后test/文件夹结构如下:

b.命令解释
cp -t path/to/target_directory path/to/file_or_directory1 path/to/file_or_directory2 ...
cp命令的-t参数指定目的路径,将目的路径后的文件复制到目的路径处。
3. 将多个文件复制到多个文件夹
a.命令示例
将file1, file2和file3分别复制到目录des_dir1/,des_dir2/和des_dir3/下:
echo ./des_dir1 ./des_dir2 ./des_dir3/ | xargs -n 1 cp ./file1 ./file2 ./file3
该命令等效于以下命令:
cp ./file1 ./file2 ./file3 ./des_dir1/
cp ./file1 ./file2 ./file3 ./des_dir2/
cp ./file1 ./file2 ./file3 ./des_dir3/
运行后test/文件夹结构如下:

b.命令解释
-
echo ./des_dir1/ ./des_dir2/ ./des_dir3/echo命令将des_dir1,des_dir2和des_dir3给输出流(标准输出) -
||管道符,将echo命令的输出给下一个命令,即给xargs。 -
xargs -n 1xargs命令将接收到的输入(echo的输出即xargs的输入),作为参数输出给下一个命令,即cp命令。xargs默认将输出的参数添加到下个命令的最后。-n 1指定了xargs每次传给命令cp一个参数。 -
cp ./file1 ./file2 ./file3cp命令将文件./file1,./file2和./file3复制到xargs给的参数路径下,即./des_dir1/,./des_dir2/和./des_dir3/下。
三、参考
[1]. xargs命令
[2]. ChatGPT


















