如何从所有目录及子目录复制指定文件并保留原目录结构?
保留目录结构复制指定文件的方法
如果需要把所有子目录里的指定类型文件(比如.xls)复制到新目录,同时保留原有的子目录结构,可以用以下两种实用方法:
方法一:find + cp --parents
cp的--parents参数会保留文件的相对路径,并自动创建目标路径中不存在的子目录。执行以下命令:
find . -name "*.xls" -exec cp --parents {} newDir/ \;
举个例子:如果当前目录下有文件s1/s2/report.xls,执行命令后,它会被复制到newDir/s1/s2/report.xls,无需手动创建s1/s2目录。
方法二:rsync(更高效)
rsync适合处理大量文件的场景,命令逻辑更清晰:
rsync -av --include="*/" --include="*.xls" --exclude="*" ./ newDir/
参数说明:
-av:归档模式(保留权限、时间戳等)+ 显示详细同步信息--include="*/":确保所有子目录结构被保留--include="*.xls":仅包含.xls类型的文件--exclude="*":排除其他所有非指定文件
如果目标目录newDir不存在,rsync会自动创建它。
内容的提问来源于stack exchange,提问作者len
相关产品推荐
相关产品推荐

