[Unix][Shell脚本]将所有文件从一个文件夹复制到另一个文件夹
我正在尝试为每日cronjob创建一个bashshell脚本 该脚本用于将所有扩展名为txt的文件(包括子目录)从文件夹“fromDir”复制到文件夹“toDir” 如果“toDir”目录不存在,它还将创建该目录 我试图在这里使用tar压缩文件,并在文件移动后解压缩,以加快传输过程中所花费的时间,目标文件夹的结构应与原始文件夹完全相同[Unix][Shell脚本]将所有文件从一个文件夹复制到另一个文件夹,shell,unix,Shell,Unix,我正在尝试为每日cronjob创建一个bashshell脚本 该脚本用于将所有扩展名为txt的文件(包括子目录)从文件夹“fromDir”复制到文件夹“toDir” 如果“toDir”目录不存在,它还将创建该目录 我试图在这里使用tar压缩文件,并在文件移动后解压缩,以加快传输过程中所花费的时间,目标文件夹的结构应与原始文件夹完全相同 #!/bin/bash -l fromDir='c:/fromFolder/' ; toDir='c:/toFolder/' ; find $fromDir -
#!/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
!知道了!现在对我来说很有意义非常感谢你的快速帮助!它工作得很好!而不是<代码>谢谢< /代码>评论,请考虑投票和/或接受答案!