Linux下如何将多层嵌套目录中指定扩展名的文件集中复制到单个文件夹
多层嵌套目录指定类型文件平铺复制实现方法
无需安装第三方工具,Linux原生环境即可完成全流程操作,具体步骤与适配方案如下:
前置核对
- 先在源根目录(Folder_X路径下)执行原有匹配命令
find . -iname "*.type",逐行核对输出的匹配文件列表,确认没有误匹配的内容,避免后续复制错误文件。 - 提前创建目标平级存储目录,避免因路径不存在导致复制报错:
mkdir -p /some/another/location/Folder_I
基础复制命令
在源根目录下执行以下命令,所有匹配到的.type文件会直接平铺复制到目标文件夹,完全不会保留原有的嵌套子目录结构:find . -type f -iname "*.type" -exec cp {} /some/another/location/Folder_I/ \;
命令参数说明:
-type f:限定查找对象为普通文件,自动跳过同名目录、异常软链接,避免复制操作报错-iname:不区分大小写匹配文件后缀,若需要严格区分大小写匹配,可替换为-name
不同场景的命令调整
- 待复制文件包含空格/特殊字符、文件总量较大时:可替换为以下命令,避免特殊字符导致的复制中断,同时大幅提升大量文件的处理效率:
find . -type f -iname "*.type" -print0 | xargs -0 cp -t /some/another/location/Folder_I/ - 不同嵌套目录下存在同名字的.type文件、需要避免覆盖目标文件夹已有内容时:在
cp命令后追加参数:- 加
-n:复制时不覆盖目标文件夹内已存在的同名文件 - 加
--backup=numbered:自动为重名文件追加数字序号后缀,生成如file1.type.~1~的区分文件,不会互相覆盖
- 加
- 需要完整保留原文件的权限、修改时间、所属用户等属性时:在
cp命令后追加-a参数即可。
内容的提问来源于stack exchange,提问作者RC0993
相关产品推荐
相关产品推荐

