Как скопировать музыкальные файлы из нескольких списков воспроизведения и сохранить структуру каталогов одинаковой?
Так что мой исходный каталог будет ~/Music
и каталог назначения будет /mnt/Music/
, Скажем, файл с именем "music1.mp3" находится под ~/Music/dir1/music1.mp3
, Я также получил другой файл в плейлисте с именем "music2.mp3", расположенный в ~/Music/dir2/music2.mp3
,
Как я могу отразить место назначения так, чтобы "music1.mp3" копировал в /mnt/Music/dir1/
& "music2.mp3" под /mnt/Music/dir2/
?
1 ответ
Вы можете сделать это с помощью терминала.
Используйте соответствующую команду cp
- Убедитесь, что папка "Музыка" является вашей текущей рабочей папкой.
cd ~/Music/
- Выполните копию. Укажите ваш исходный файл в качестве пути, начиная с вашего
~/Music
папка. Определение/mnt/Music
в качестве пункта назначения. Хитрость заключается в использовании опции--target
, Это воссоздает относительный путь файла в цель. Команда при этом будет выглядеть так:
cp --target dir1/music1.mp3 /mnt/Music
Из-за опции --target файл music1.mp3
будет скопирован в папку dir1
под вашим /mnt/Music
папка. Если папка не существует, она будет создана.
Автоматизировать весь плейлист
Поскольку это bash, его можно автоматизировать. Вы можете напрямую использовать свой плейлист, если он просто перечисляет музыкальные файлы с их относительными путями в текстовом формате. Если программное обеспечение вашего музыкального проигрывателя использует другой формат, вам сначала нужно будет экспортировать список воспроизведения в текстовом формате, например в формате m3u. В следующем примере предполагается, что у вас есть плейлист myplaylist.m3u
который содержит два музыкальных файла:
dir1/music1.mp3
dir2/music2.mp3
Следующая строка приведет к тому, что все файлы в списке воспроизведения будут скопированы на /mnt/Music
папка под своей соответствующей папкой. Это будет работать и для больших плейлистов. Опять же, ваш текущий рабочий каталог должен быть ~/Music
чтобы это работало. В противном случае файлы в этой папке не будут найдены.
cat myplaylist.m3u | while read f; do cp --target "$f" /mnt/Music; done
"$f"
будет строка из вашего текстового файла myplaylist.m3u
,