我正在尝试为每天的cronjob创建bash脚本。
脚本将所有具有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 -发布于 2018-04-25 18:59:12
如果您可以使用rsync,您可以尝试如下:
rsync -av --include="*/" --include="*.txt" --exclude="*" ~/from/ ~/to/ --dry-run这可以解释为包含包含*.txt的每个目录,并排除任何其他内容(顺序很重要)。
--dry-run选项只是打印将要执行的操作,但不会复制任何文件。
发布于 2018-04-25 05:53:25
请参阅我的评论,如果您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 -
)https://stackoverflow.com/questions/50014813
复制相似问题