我必须找到以数字结尾的目录中的所有文件(这部分没问题)并将它们复制到修改后的名称下(我不知道如何执行这部分)。通常:
find $folder -maxdepth 1 -type f -name '*-[0-9]\.jpg'
将所有这些文件复制到同一目录,命名它们$originalName-mini.jpg
答案1
find
+bash
解决方案:
find $folder -maxdepth 1 -type f -name "*-[0-9].jpg" -exec \
bash -c 'cp "$1" "${1:0:-4}-mini.jpg"' _ {} \;
答案2
您实际上并不需要find
这里,因为您只是在单个目录中查找,只需一个 shell 循环就可以完成这项工作。您也不需要转义文件名通配模式中的点。
for pathname in "$folder"/*-[0-9].jpg; do
[ -f "$pathname" ] && cp "$pathname" "${pathname%-[0-9].jpg}-mini.jpg"
done
参数替换从 值的末尾${variable%pattern}
删除。pattern
variable
该-f
测试绝对确保我们处理的是常规文件(或指向该文件的符号链接),而不是命名错误的目录。
使用find
来做同样的事情:
find "$folder" -maxdepth 1 -type f -name '*-[0-9].jpg' -exec sh -c '
for pathname do
cp "$pathname" "${pathname%-[0-9].jpg}-mini.jpg"
done' sh {} +
答案3
执行此操作的一种方法是将以下命令附加到脚本中。假设你有原来的名字$originalName
,你可以使用
cp $originalName $(basename $originalName .jpg)-mini.jpg