[Unix] [Shell Script]将所有文件从一个文件夹复制到另一个文件夹

时间:2018-04-25 05:46:29

标签: shell unix

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

该脚本是从文件夹" fromDir"中复制所有带有txt扩展名的文件(包括子目录)。到文件夹" 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 -

2 个答案:

答案 0 :(得分:1)

第一次看到我的评论,然后如果你tar不支持-C参数(更改为dir befor tar),你可以试试这个:

#!/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 -
)

答案 1 :(得分:0)

如果你可以使用rsync,你可以试试这个:

rsync -av --include="*/" --include="*.txt" --exclude="*" ~/from/ ~/to/ --dry-run

这可以解释为包含*.txt的每个目录并排除其他任何目录(顺序很重要)

选项--dry-run仅用于打印将要执行的操作,但不会复制任何文件。