创建脚本以获取其他脚本的输出

时间:2018-06-24 11:21:33

标签: bash playlist

基本上,我想在每个包含音乐的文件夹中都有一个(生成的)播放列表,该列表按顺序排序,并且与该文件夹具有相同的名称。

我有一个脚本,可以从音乐文件中获取信息,并以特定格式创建播放列表。

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/*吗?

1 个答案:

答案 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命令不喜欢写入同时输入的输出文件。