Создать скрипт с выводом из другого - PullRequest
0 голосов
/ 24 июня 2018

По сути, я хочу иметь (сгенерированный) список воспроизведения в каждой папке, содержащей музыку, отсортированный по порядку и имеющий то же имя, что и папка.

У меня есть скрипт, который берет информацию из музыкальных файлов и создаетсписок воспроизведения в определенном формате.

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 в первую очередь?Я предполагаю, что это потому, что я указал ~/Music/* в строке for?

1 Ответ

0 голосов
/ 26 июня 2018

Возможно, вы захотите что-то вроде

#!/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 не любят записывать в выходной файл, который вводится одновременно.

...