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