【问题标题】:Mac OS - Batch Rename All Files in Folder but Disregard All SubFoldersMac OS - 批量重命名文件夹中的所有文件但忽略所有子文件夹
【发布时间】:2020-03-14 07:24:17
【问题描述】:

我有一堆文件夹,我想重命名其中包含的所有文件减去任何子文件夹。

例如,假设我有两个父文件夹:

ParentFolder1 - [PF1]
ParentFolder2 - [PF2]

每个父文件夹都有不同数量的子文件夹:

SubParentFolder1_1
SubParentFolder1_2
SubParentFolder2_1

在 ParentFolder 和每个 SubParentFolder 中可以有 .mp3、.txt 等文件。等或更多子文件夹。

我将如何以这种方式重命名所有文件:

example.mp3 -> example - [PF1]
example.txt -> example - [PF2]
example.docx -> example - [PF2]

感谢任何意见!

【问题讨论】:

  • 我不知道 [PF1] 是否是文件夹名称和所需文件名的一部分,或者您是否给我们一个指针,表明它们是父文件夹 1 和 2?如果您只删除示例中所示的扩展名,则会出现名称冲突。

标签: macos file rename


【解决方案1】:

这是一种列出一系列目录中的文件(而不是文件夹)然后对它们执行某些操作的方法...重命名的细节取决于您。

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 并回显原始文件夹+文件,然后是通过模式匹配删除后缀的文件夹和文件。

一旦您对此进行了测试,您可以将 echo 替换为 mv 以进行实际重命名...(我将它们放在单独的行中以使其更具可读性,但通常会将其作为一个长命令运行.

【讨论】:

    猜你喜欢
    • 2016-07-04
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2015-12-25
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    相关资源
    最近更新 更多