如何将所有具有特定扩展名的文件从一个位置复制到另一个位置?
例如,我想将所有音乐文件复制到我的 mp3 播放器上,但我硬盘上的音乐文件夹包含封面和音乐。我知道我可以将所有内容复制过去,然后删除所有图片,但我希望有比这更好的解决方案。我见过使用 rsync 的解决方案,例如
rsync -av --exclude "*/" --include "*.mp3" --include "*.ogg" --include "*.wma" --include "*.flac" ~/Music/. /media/E100/Music
但这抱怨很多关于无法更改文件组的问题,并且由于某种原因没有复制所有文件(它留下了一些空白目录)。另外,我更希望文件的创建日期是当前时间,因为这可能更适合 mp3 播放器的内部数据库。
我真正想要的其他事情:如果它不覆盖文件,而只复制最新的文件,那就太好了,但是,如果我必须删除所有文件,然后复制整个目录,我也可以处理。
答案1
听起来你已经通过 rsync 找到了你想要的解决方案。
如果它抱怨权限问题并且无法复制某些内容,请尝试使用sudo
sudo rsync -auv etc etc
编辑:标志-a
是导致其保留时间的原因。标志-a
是标志的别名-rlptgoD
,标志-t
是导致保留时间的原因。您可能更喜欢像这样使用 rsync:
sudo rsync -rlpgoDuv etc etc
另外:对于特别长的副本,您可能需要使用标志--progress
而不是-v
。
看来这可行:
sudo rsync -rlpuv --progress --include "*/" --include "*.mp3" --include "*.ogg" --include "*.wma" --include "*.flac" --exclude "*" ~/Music/ /media/E100/Music