首页 > 解决方案 > [Unix][Shell 脚本] 将一个文件夹中的所有文件复制到另一个文件夹

问题描述

我正在尝试为日常 cronjob 创建一个 bash shell 脚本。

该脚本是将所有带有txt扩展名的文件(包括子目录)从文件夹“fromDir”复制到文件夹“toDir”。

如果它不存在,它也会创建“toDir”目录。

我在这里尝试使用 tar 压缩文件并在移动后解压缩以加快传输过程中花费的时间,目标文件夹应该与原始文件夹具有完全相同的结构。

#!/bin/bash -l

fromDir='c:/fromFolder/' ;
toDir='c:/toFolder/' ;
find $fromDir -maxdepth 3 -name '*.txt' -print |
tar zcvf - -T - |
mkdir -p -m 777 $toDir ;
cd $toDir && tar zxvf -

标签: shellunix

解决方案


第一次看到我的评论,那么如果你tar不支持-C论点(在 tar 之前更改为 dir),你可以试试这个:

#!/bin/bash

fromDir='c:/fromFolder/' ;
toDir='c:/toFolder/' ;
mkdir -p -m 777 $toDir ;
find $fromDir -maxdepth 3 -name '*.txt' -print |
tar zcf - -T - | (
    cd $toDir
    tar zxvf -
)

推荐阅读