Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
[Unix][Shell脚本]将所有文件从一个文件夹复制到另一个文件夹_Shell_Unix - Fatal编程技术网

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

[Unix][Shell脚本]将所有文件从一个文件夹复制到另一个文件夹,shell,unix,Shell,Unix,我正在尝试为每日cronjob创建一个bashshell脚本 该脚本用于将所有扩展名为txt的文件(包括子目录)从文件夹“fromDir”复制到文件夹“toDir” 如果“toDir”目录不存在,它还将创建该目录 我试图在这里使用tar压缩文件,并在文件移动后解压缩,以加快传输过程中所花费的时间,目标文件夹的结构应与原始文件夹完全相同 #!/bin/bash -l fromDir='c:/fromFolder/' ; toDir='c:/toFolder/' ; find $fromDir -

我正在尝试为每日cronjob创建一个bashshell脚本

该脚本用于将所有扩展名为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 -

首先查看我的评论,然后如果
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 -
)
rsync -av --include="*/" --include="*.txt" --exclude="*" ~/from/ ~/to/ --dry-run
如果您可以使用,您可以尝试以下方法:

#!/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 -
)
rsync -av --include="*/" --include="*.txt" --exclude="*" ~/from/ ~/to/ --dry-run
这可以解释为包含带有
*.txt
的每个目录,并排除任何其他内容(顺序很重要)


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

您不能使用
介于
|
tar
之间!首先创建新目录,然后使用
tar
-C
arg而不是
cd
!知道了!现在对我来说很有意义非常感谢你的快速帮助!它工作得很好!而不是<代码>谢谢< /代码>评论,请考虑投票和/或接受答案!