Как скопировать музыкальные файлы из нескольких списков воспроизведения и сохранить структуру каталогов одинаковой?

Так что мой исходный каталог будет ~/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

  1. Убедитесь, что папка "Музыка" является вашей текущей рабочей папкой.

cd ~/Music/

  1. Выполните копию. Укажите ваш исходный файл в качестве пути, начиная с вашего ~/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,

Другие вопросы по тегам