用shell脚本写一个循环遍历出某个目录下的子目录或子文件并将它们打包压缩到某个路径下

就是先遍历它下面的目录还是文件,文件都是日志类的,然后将当前系统时间的前一天的打包压缩,目录就接着遍历直到都是文件。#!/bin/shfunctionergodic(){... 就是先遍历它下面的目录还是文件,文件都是日志类的,然后将当前系统时间的前一天的打包压缩,目录就接着遍历直到都是文件。
#!/bin/sh
function ergodic(){
for file in `ls mall-test`
do
if [ -d mall-test"/"$file ]
then
ergodic mall-test"/"$file
else
find -mtime 0 > backupfile.list
tar -T backupfile.list -cvzf /home/app/logs/backup/`date -d"1 day ago" +"%Y%m%d"`mall-test.tar.gz
rm backupfile.list
fi
done
}
这是我写的,不知道哪出错了
展开
 我来答
cnbubble
2017-04-14 · TA获得超过2607个赞
知道大有可为答主
回答量:1990
采纳率:83%
帮助的人:772万
展开全部

(1)sh 的Shell定义函数不能这样,Bash的可以这样定义

第一行的sh改为bash,或者第二行改为ergodic(){  【即把function去掉】

(2)你写的函数没有输入参数,或者说你想让函数进行递归调用自身,但是你写点代码不能实现

#!/bin/bash
function ergodic() {
 for file in `ls $1`     #$1是调用时的第一个参数  函数找出所有非目录的文件
  do
  if [ -d "$1/$file" ]
    then
#    echo "$1/$file"
    ergodic "$1/$file"
  else
    echo $file
  fi
  done
}
ergodic "~/mall-test"    #或者吧mall-test的绝对路径写上

后面的打包压缩部分没有测试,你可以单独在shell上运行命令,测试tar等命令是否实现了自己想法。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式