Как создать ссылки из файловых путей в файле? - PullRequest
0 голосов
/ 27 февраля 2012

Предыстория:

В моей музыкальной коллекции есть файлы MP3 и FLAC.У меня есть MP3, организованные под музыку / mp3 и FLACs в музыке / flac.Хотя я предпочитаю слушать файлы FLAC, большая часть моей музыки - это MP3.Некоторые из песен в музыке / mp3 совпадают с песнями в музыке / музыке.

Когда мой настольный музыкальный проигрыватель создает библиотеку каталога музыки, эти песни дублируются.Я хочу связать свои MP3-файлы, которые являются уникальными для / music / mp3, с их собственным каталогом, чтобы мой музыкальный проигрыватель мог сканировать его и / music / flac.Таким образом будут воспроизводиться все песни с кодировкой FLAC и уникальные MP3-файлы.

Вопрос:

Я определил, какие песни являются уникальными для музыки / mp3, и у меня естьфайл с именами абсолютных путей, разделенных символами новой строки.Как получить команду ln для циклического прохождения каждой строки (создания ссылки, скажем, music / mp3_unique)?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2012

Если все файлы находятся в одной файловой системе, вы можете использовать жесткие ссылки, а не программные. Преимущество в том, что вам больше не нужно использовать абсолютные пути. В этом случае я бы соблазнился сделать что-то вроде этого:

Итак ... скажем, что у вас есть дерево файлов, которое выглядит примерно так:

/ музыка / Музыка / mp3 / Музыка / FLAC

Создайте каталог «scanme» под музыкой и создайте жесткие ссылки на всю музыку, которую хотите воспроизвести:

mkdir /music/scanme
cd /music/scanme
( cat ../mp3/unique.txt; find ../flac ) | while read file
do
    ln "$file" $(basename "$file")
done

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

0 голосов
/ 27 февраля 2012

Я не думаю, что ln может создавать ссылки из файла, но поскольку вы используете bash, вы можете сделать это:

for i in `cat file`;do ln -s $i;done

, где file - это имяфайла с абсолютными путями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...