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?如果您只删除扩展名,则会出现名称冲突,如示例所示。