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

Macos Mac OS-批量重命名文件夹中的所有文件,但忽略所有子文件夹,macos,file,rename,Macos,File,Rename,我有一堆文件夹,我想重命名其中包含的所有文件减去任何子文件夹 例如,假设我有两个父文件夹: ParentFolder1 - [PF1] ParentFolder2 - [PF2] 每个父文件夹都有不同数量的子文件夹: SubParentFolder1_1 SubParentFolder1_2 SubParentFolder2_1 在ParentFolder和每个子ParentFolder中可以有.mp3、.txt等文件。等。或多个子文件夹 我将如何以这种方式重命名所有和任何文件: examp

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

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

ParentFolder1 - [PF1]
ParentFolder2 - [PF2]
每个父文件夹都有不同数量的子文件夹:

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

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

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;
说明:

对于与通配符
父项*
匹配的目录中的每个文件夹(
FOLD
), 列出内容,将
/
添加到目录名的末尾。 在该列表上执行反向
grep
,只留下文件名。 循环遍历每个
文件
并回显原始文件夹+文件,然后是通过模式匹配删除后缀的文件夹和文件


测试此功能后,您可以用
mv
替换
echo
,以执行实际重命名。。。(我已经将它们放在单独的行中,以使它们更具可读性,但通常会将其作为一个长命令运行。

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