一、简介
本文介绍了在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 1
xargs
命令将接收到的输入(echo
的输出即xargs
的输入),作为参数输出给下一个命令,即cp
命令。xargs
默认将输出的参数添加到下个命令的最后。-n 1
指定了xargs
每次传给命令cp
一个参数。 -
cp ./file1
cp
命令将文件./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 1
xargs
命令将接收到的输入(echo
的输出即xargs
的输入),作为参数输出给下一个命令,即cp
命令。xargs
默认将输出的参数添加到下个命令的最后。-n 1
指定了xargs
每次传给命令cp
一个参数。 -
cp ./file1 ./file2 ./file3
cp
命令将文件./file1
,./file2
和./file3
复制到xargs
给的参数路径下,即./des_dir1/
,./des_dir2/
和./des_dir3/
下。
三、参考
[1]. xargs命令
[2]. ChatGPT