首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[Unix][Shell脚本]将所有文件从一个文件夹复制到另一个文件夹

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

Stack Overflow用户
提问于 2018-04-25 05:46:29
回答 2查看 66关注 0票数 0

我正在尝试为每天的cronjob创建bash脚本。

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

如果"toDir“目录不存在,它也会生成它。

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

代码语言:javascript
复制
#!/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 -
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-25 18:59:12

如果您可以使用rsync,您可以尝试如下:

代码语言:javascript
复制
rsync -av --include="*/" --include="*.txt" --exclude="*" ~/from/ ~/to/ --dry-run

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

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

票数 0
EN

Stack Overflow用户

发布于 2018-04-25 05:53:25

请参阅我的评论,如果您tar不支持-C参数(请更改为tar之前的dir ),您可以尝试如下:

代码语言:javascript
复制
#!/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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50014813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档