带过滤器的文件复制

带过滤器的文件复制

如何将所有具有特定扩展名的文件从一个位置复制到另一个位置?

例如,我想将所有音乐文件复制到我的 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

相关内容