基本上,我想在每个包含音乐的文件夹中都有一个(生成的)播放列表,该列表按顺序排序,并且与该文件夹具有相同的名称。
我有一个脚本,可以从音乐文件中获取信息,并以特定格式创建播放列表。
1)我可以通过
在单个文件夹上运行脚本$ ./playlist.sh ~/Path/To/Music > output.xwaxpls
2)将播放列表添加到数值上(我的所有音乐都格式化为%track% - %artist% - %title%
)
$ sort -o output.xwaxpls output.xwaxpls
3)将output.xwaxpls的名称更改为父目录名称
目前还无法实现。
很显然,我会喜欢一个可以完成所有这些工作的脚本。
我试图一次学习和完成每个步骤,但可悲的是,我遇到了第一个障碍。我什至无法弄清楚如何在所有子目录上运行playlist.sh。在我尝试其他两个之前,我就陷入了困境。
我希望获得帮助。...
编辑:
再过几个小时,我就到了地方!
`#!/bin/sh
curdir=$(pwd)
for folder in ~/Music/*; do
[ -d "$folder" ] && cd "$folder" && ~/Desktop/./playlist.sh "$folder" > "$folder".xwaxpls && sort -o "$folder".xwaxpls "$folder".xwaxpls
done
` 这将以我想要的格式创建我想要的播放列表.......但是播放列表保存在〜/ Music中,而不是保存在包含文件的文件夹中。
我尝试将~/Desktop/./playlist.sh "$folder" > "$folder".xwaxpls
部分更改为~/Desktop/./playlist.sh "$folder" > "$folder"/"$folder".xwaxpls
,但踢出一个错误,提示cannot create /home/user/Music/Singles
// home/user/Music/Singles.xwaxpls: Directory nonexistent.
我还尝试添加&& mv $playlist.xwaxpls $playlist/$playlist.xwaxpls
,导致同样的//
错误。
我理解//
,因为我要强制使用双路径,但是为什么xwaxpls文件最初没有写入$folder
中呢?我想这是因为我在for行中指定了~/Music/*
吗?
答案 0 :(得分:0)
您可能想要类似的东西
#!/bin/bash
for folder in ~/Music/*; do
[ -d "$folder" ] || continue
cd "$folder" || continue
~/Desktop/playlist.sh "$folder" | sort -n > "$folder"/"${folder##*/}".xwaxpls
done
请记住,您没有尝试使用sort -o file file
,大多数Unix命令不喜欢写入同时输入的输出文件。