复制修改后的文件名

复制修改后的文件名

我必须找到以数字结尾的目录中的所有文件(这部分没问题)并将它们复制到修改后的名称下(我不知道如何执行这部分)。通常:

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}删除。patternvariable

-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

相关内容