使用find命令搜索全系统图片复制到指定文件夹时执行异常如何修正
问题原因
你当前的命令仅打印cp指令不实际执行,核心原因是-exec参数中额外添加了echo命令,echo的作用就是将后续的命令内容输出到终端,不会触发实际的复制操作。
修复方案
- 首先提前创建目标文件夹,避免cp因目标路径不存在报错:
mkdir -p ToutesImages
- 移除
-exec后的echo即可实现实际复制:
find . -regex '.*\(jpg\|jpeg\|png\|gif\)' \! -path './ToutesImages/*' -exec cp -t ToutesImages {} +
可选优化项
- 匹配大小写后缀的图片:将
-regex替换为-iregex,可以识别后缀为大写的图片(比如JPG、PNG、GIF等),避免遗漏:
find . -iregex '.*\(jpg\|jpeg\|png\|gif\)' \! -path './ToutesImages/*' -exec cp -t ToutesImages {} +
- 避免重名文件被覆盖:给
cp添加-n参数,遇到同名文件时自动跳过不覆盖;如果需要保留重名文件可以添加-b参数,自动给重名的旧文件加备份后缀。
# 跳过重名文件版本 find . -iregex '.*\(jpg\|jpeg\|png\|gif\)' \! -path './ToutesImages/*' -exec cp -n -t ToutesImages {} +
内容的提问来源于stack exchange,提问作者Xavier Darboux élève
相关产品推荐
相关产品推荐

