将目录结构展平到新目标,从目标中删除过时的文件

将目录结构展平到新目标,从目标中删除过时的文件

目录“d1”包含多个子目录,子目录中的文件均以 .bin 结尾

我希望将所有这些.bin 文件复制到“d2”,而不管目录结构(即展平),以便 Web 应用程序更容易找到这些文件。“d2”目录应保持最新,并且不包含旧文件。

我能想到的唯一我真的不喜欢的方法是:

cd /d1
mkdir /d2.new
find . -type f -name "*.bin" -exec cp -f {} /d2.new
rm -rf /d2
mv /d2.new /d2

我发现上述问题在于:

我真的很讨厌在脚本中使用“rm -rf”,觉得如果它可能出错,那它就会出错,并带来灾难性的后果。

在“rm”和“mv”完成之间,“d2”目录不存在,这可能会给需要该目录的服务带来问题。

但是如果没有最后两行,“d2”将包含旧文件,这是我也不想要的。

似乎没有办法强制“mv”将目录重命名为另一个已经存在的目录。

两个目录都在同一台服务器上,因此找到仅在文件不匹配时复制的内容将是一个好处。

相关内容