如何从多个播放列表复制音乐文件并保持目录结构相似?

如何从多个播放列表复制音乐文件并保持目录结构相似?

因此,我的源目录是~/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

相关内容