我找遍了所有的地方,但是这些词显然太笼统了。我正在写一个脚本来搜索一组文件夹中的.mp3文件。有些文件夹没有mp3,因此必须将其排除在外。
我创建了一个数组来保存uniq'd文件夹的名称。这个find命令将获取我需要的文件夹。Folders=$(sudo find /my/music/ -type f -name "*.mp3" | cut -d'/' -f7 | sort -u)
当我试图计算数组中的文件夹数时,总是会得到1
echo ${#Folders[@]}
echo ${Folders[@]}
将它们打印在单独的行上,所以我认为它们是单独的数组元素。有人能解释一下发生了什么事吗?您可能必须在cut命令中抖动字段号才能在本地复制。
最佳答案
Folders
不是数组,而是变量。
你需要:
Folders=( $(sudo find /my/music/ -type f -name "*.mp3" | cut -d'/' -f7 | sort -u) )
即用
()
将命令替换括起来。现在${#Folders[@]}
将给出数组Folders
的元素数。关于arrays - bash数组计数始终返回1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38597589/