查找特定的 PNG 图像并重命名它们

查找特定的 PNG 图像并重命名它们

我必须找到logo.png在不同子目录中命名的多个文件,并将它们的名称更改为oldlogo.png,我该怎么做?

我已经开始找到文件(每个logo.png文件是 56431 字节),但我不知道如何将它们移动到同一子目录中的另一个文件。

这就是我查找文件的方法:

find -name logo.png -size 56431c

答案1

假设您的find命令准确地找到了您要重命名的文件,您可以通过使用调用来重命名这些文件,mv如下find所示-execdir

find . -name logo.png -size 56431c -execdir mv {} oldlogo.png \;

-execdir谓词是非标准的,但经常被实现。它在找到名称的目录中执行给定的实用程序,并{}替换为文件名(GNUfind./在文件名前面添加,而其他find实现可能不会这样做)。在上面的命令中,我们使用这个事实将logo.png文件重命名为,oldlogo.png而不指定目录路径。

使用 standard find,您可能想这样做:

find . -name logo.png -size 56431c -exec sh -c '
    for pathname do
        mv "$pathname" "${pathname%/*}/oldlogo.png"
    done' sh {} +

上面的代码将sh -c批量调用找到的文件的路径名。内联脚本将迭代给定的一批路径名,并将每个路径名重命名到oldlogo.png与找到它的目录相同的目录中find。参数替换将从 的值中${pathname%/*}删除最后一个和其后的所有内容(以便它返回路径名的目录部分)。/$pathnamedirname "$pathname"

相关内容