简而言之,我想备份一个目录,但我想省略所有不包含特定文件类型的文件夹(本例中为 .cst)
我使用的模拟软件使用扩展名为 .cst 的模拟模型。每个模拟文件都会创建一个非常大的文件夹,其中包含我不感兴趣的文件(我将这些称为自动创建的文件夹)用于备份。我只想备份这些 .cst 文件。我可以搜索“*.cst”,但文件被组织在许多文件夹中(我自己为了组织目的而创建的)。
有没有聪明的办法来解决这个问题?
答案1
一个简单的 shell 脚本就可以完成这个工作:
BASEPATH="/path/to/start/from"
BACKUPPATH="/path/to/backup/to"
cd "$BASEPATH"
while read D; do
test -d "$D" || continue
mkdir -p "$BACKUPPATH/$D" || exit 1
cp "$D/"*.cst "$BACKUPPATH/$D/" || exit 2
done < <(find . -type f -name '*.cst' -exec dirname {} \; | sort -u)
编辑
由于没有迹象表明 OQ 中涉及 Windows(模拟软件 Linux 是默认的),因此这是 Linux(及其 unix-y 朋友)的有效答案。它不会在 Windows 上运行。
答案2
我们可以开始争论,即使从古代开始微软 磁盘操作系统这样的事是可能的,我们刚刚开始分析命令的语法FOR
,以便在微软 视窗操作系统。
然而,一个非常快速的解决方案是安装 GHISLER_Christian 的总指挥官静态软件应用程序,只需按下F5要复制的文件夹上的键并指定*.cst
您感兴趣的文件扩展名。
我们刚刚测试了这个解决方案,它运行良好。它保持了您想要的文件夹结构。
更新:
再想想,也没有必要深入研究批处理文件处理系统的复杂性微软公司。这个问题肯定经常出现,甚至在xcopy
指挥部之前的指挥部旧时代以来,它都是可以解决的robocopy
。
如上所示,我们也测试了这个辅助解决方案,并且效果也很好。它按照您的意愿维护文件夹结构。您只需调整上述xcopy
命令以适应您的源文件夹、目标文件夹和*.cst
文件扩展名。