【发布时间】:2021-04-04 19:16:04
【问题描述】:
我有几个文件夹,其中包含按流派、艺术家和专辑组织的 mp3 文件。 我想要大写字母的流派,但层次结构中的所有内容都使用小写字母并且没有特殊字符和空格。
为此,我编写了一个 bash 脚本,它接受所有子文件夹中文件夹的路径,并且文件应重命名:
#!/bin/bash
#Aufruf:
#$ ./alles.klein '/home/anja/Musik/HOERSPIELE'
PFAD=$1
cd $PFAD
depthVarations=("-maxdepth 1 -type d" "-depth -type d" "-depth -type f")
for i in "${depthVarations[@]}"
do
:
date
echo $i
find . $i -exec rename 'y/A-Z/a-z/' {} \;
date
echo $i
find . $i -exec rename 's/(.*)(\.\/)(.*)/$1\/\L$3/' {} \;
#.... several more regex variations
done
我的问题是它试图改变整个路径,而不仅仅是我想要改变的部分,例如
/home/anja/Musik/ORIENTALISCHES/A-wa
变成现在
/home/anja/musik/orientalisches/a-wa #everything is lowercase
期望的结果是:
/home/anja/Musik/ORIENTALISCHES/a-wa
如您所见,musik/orientalisches 也更改为小写。
我希望通过“cd”进入正确的文件夹,我可能只会得到下面的路径,但它似乎不是那样工作的。
【问题讨论】:
-
我想,我做到了。位,我调整了我的描述以使其更易于理解