使用bash脚本备份旧目录

我正在编写一个小的bash脚本,当它们超过某个年龄且遇到一些困难时,会以压缩格式将目录存档到另一个位置.这就是我正在做的事情.
#!/bin/bash
# Archives completed CDP episodes to compressed storage. Will eventually expand to put these off-site as well.

InputDir="/home/wgant/stuff/"
OutputDir="/home/wgant/archived/"

find $InputDir$-maxdepth 0 -mtime +1 -type d -exec echo $OutputDir${} \;

我在bash上有点绿,所以我慢慢来.对于第一步,我只想转储一个输出文件将被调用的列表.但是,当我运行上面的命令时,文件名是正确的,但完整的路径显然是连接在一起,我不想要.我如何删除文件名?

显然,一旦这个工作,我将调用它来创建tarball并删除有问题的目录.

语法不太对,这更好:
find $InputDir -maxdepth 0 -mtime +1 -type d -exec echo $OutputDir{} \;

删除路径的前缀部分,一种简单的方法是在执行find之前进入目录,如下所示:

InputDir="/home/wgant/stuff"
OutputDir="/home/wgant/archived"

(cd "$InputDir"; find . -maxdepth 0 -mtime +1 -type d -exec echo "$OutputDir"/{} \;)

请注意,我将最后一个命令包装在(…)中.这是一个子壳,它的目的是cd命令只在其中有效,脚本的其余部分不会受其影响.这很重要,因为不建议在脚本中使用cd更改工作目录.将其包裹在(…)内使其安全.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...