使用同步文件仅比较文件名而不比较扩展名

使用同步文件仅比较文件名而不比较扩展名

我正在尝试同步 2 个包含多种类型音频文件(WMA、MP3、M4V...)的文件夹。

我想同步这些文件夹,但同步过程应该只考虑文件名,而不考虑扩展名。因此,如果文件夹 A 包含“the suburbs.mp3”并且文件夹 B 包含“the suburbs.m4v”,则同步程序应将这两个文件视为相同(而不同步它们)。

我正在研究 rsync 的文档,但似乎找不到方法来做到这一点。

有没有人有建议,或者对可以做到这一点的其他软件有建议?

答案1

您可以创建具有所有可能扩展名的空文件,并使用--ignore-existing.

find A -type f \( -name '*.flac' -o -name '*.m4v' -o -name '*.mp3' -o '*.ogg' -o '*.wma' \) \
     -exec sh -c '
  for base; do
    base=${base%.*};
    for ext in flac m4v mp3 ogg wma; do : >>"$base.$ext"; done;
  done' _ {} +
# Do the same on B …
rsync -a --ignore-existing A B

您可能感兴趣mp3fs, AFUSE 可堆叠文件系统它提供了目录树视图,其中所有音频文件均显示为 MP3。我认为这对解决您的问题不会特别有帮助,但它可能是解决您的问题或以其他方式证明有用的替代方法。

相关内容