繁体   English   中英

Mac OS - 批量重命名文件夹中的所有文件但忽略所有子文件夹

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM