我有一个根目录(03_COMPLETE),其中包含40个子文件夹,它们都在两级下面(都叫CHILD_PNG),并且包含我想要重命名的.png文件。我必须遍历6个完整的文件夹,其中包含成千上万个文件。所有文件当前的命名方式如下:123456_lifestyle.png,我希望将它们命名为lifestyle_123456.png。
我的代码:
如果我在单个文件夹中运行 .png 文件(不使用-mindepth),它会对它们进行重命名。但是,如果我在根目录03_COMPLETE文件夹上运行以一次性完成所有重命名的工作,我就会遇到像这样的错误:
“无法将 '/Volumes/COMMON-LIC-PHOTO/RETOUCHING/04_DELIVERY_PNG/Computer1/03_COMPLETE/06052017_NYS5_W_1263_Output/CHILD_PNG/123456_lifestyle.png' 重命名为 '/Volumes/COMMON-LIC-PHOTO/RETOUCHING/04_DELIVERY_PNG/Computer1/03_COMPLETE/NYS5_06052017_W_1263_Output/CHILD_PNG/123456_lifestyle.png':没有该文件或目录”
我认为这可能与下面一级文件夹的名称有关(例如,在这里是NYS5_06052017_W_1263_Output),因为它确实在一些名为Bustform_000的文件夹中进行了重命名。但是大多数文件夹都以数字开头,例如06052017。
我无法弄明白为什么这在.png文件夹级别上可以正常工作,但在根文件夹上却不能,并且为什么它会在几个文件夹中重命名,而在大多数文件夹中却不行。
另外奇怪的是,在错误信息中,它说正在尝试将123456_lifestyle.png重命名为相同的文件名。为什么会这样?有什么想法吗?
我的代码:
find . -mindepth 2 -type f -iname '*.png' -print0 | xargs -0 /usr/local/bin/rename -v 's/\/([0-9]+)_([A-Za-z]+[0-9])/\/$2_$1/'\;
如果我在单个文件夹中运行 .png 文件(不使用-mindepth),它会对它们进行重命名。但是,如果我在根目录03_COMPLETE文件夹上运行以一次性完成所有重命名的工作,我就会遇到像这样的错误:
“无法将 '/Volumes/COMMON-LIC-PHOTO/RETOUCHING/04_DELIVERY_PNG/Computer1/03_COMPLETE/06052017_NYS5_W_1263_Output/CHILD_PNG/123456_lifestyle.png' 重命名为 '/Volumes/COMMON-LIC-PHOTO/RETOUCHING/04_DELIVERY_PNG/Computer1/03_COMPLETE/NYS5_06052017_W_1263_Output/CHILD_PNG/123456_lifestyle.png':没有该文件或目录”
我认为这可能与下面一级文件夹的名称有关(例如,在这里是NYS5_06052017_W_1263_Output),因为它确实在一些名为Bustform_000的文件夹中进行了重命名。但是大多数文件夹都以数字开头,例如06052017。
我无法弄明白为什么这在.png文件夹级别上可以正常工作,但在根文件夹上却不能,并且为什么它会在几个文件夹中重命名,而在大多数文件夹中却不行。
另外奇怪的是,在错误信息中,它说正在尝试将123456_lifestyle.png重命名为相同的文件名。为什么会这样?有什么想法吗?
\;
之前插入一个空格。 - Cyrus\;
不是xargs
命令的一部分,而是属于find
命令的-exec
选项。因此,在您的命令中它是不必要的。 - Cyrus