[英]Mac OS - Batch Rename All Files in Folder but Disregard All SubFolders
我有一堆文件夹,我想重命名其中包含的所有文件减去任何子文件夹。
例如,假设我有两个父文件夹:
ParentFolder1 - [PF1]
ParentFolder2 - [PF2]
每个父文件夹都有不同数量的子文件夹:
SubParentFolder1_1
SubParentFolder1_2
SubParentFolder2_1
在 ParentFolder 和每个 SubParentFolder 中可以有 .mp3、.txt 等文件。 等或更多子文件夹。
我将如何 go 以这种方式重命名所有和任何文件:
example.mp3 -> example - [PF1]
example.txt -> example - [PF2]
example.docx -> example - [PF2]
感谢任何输入!
这是一种在一系列目录中列出文件(而不是文件夹)然后对它们执行某些操作的方法……重命名的细节取决于您。
for FOLD in Parent*;
do for FILE in $(ls -p $FOLD | grep -v "/");
do echo "$FOLD/$FILE" "$FOLD/${FILE%.*}";
done; done;
解释:
对于与通配符Parent*
匹配的目录中的每个文件夹 ( FOLD
),列出内容,将/
添加到目录名称的末尾。 在该列表上执行反向grep
,只留下文件名。 循环遍历每个FILE
并回显原始文件夹+文件,然后是通过模式匹配删除后缀的文件夹和文件。
一旦你测试了这个,你可以用mv
替换echo
来进行实际的重命名......(我把它们放在单独的行上以使它们更具可读性,但通常会将其作为一个长命令运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.