仅当基于文件名的正则表达式与目标目录中的文件不匹配时才移动文件

仅当基于文件名的正则表达式与目标目录中的文件不匹配时才移动文件

最好通过一个例子来解释:

源目录:

  • 文件-a-1.txt
  • 文件-b-1.txt

目标目录:

  • 文件-a-2.txt

预期结果:

  • 文件-a-2.txt
  • 文件-b-1.txt

仅当文件从源目录移动到目标目录且目标目录没有与文件名部分匹配的文件时,才将所有文件从源目录移动到目标目录。

答案1

解决方案:

  1. 列出目标目录中的文件

  2. 用 sed 替换为通配符匹配

  3. 管道到 rsync--exclude-from

find target_dir | sed -r 's/\.\/(.+?)-.*/\1*/' | rsync --verbose --ignore-existing --exclude-from - src_dir/* target_dir

相关内容