LinuxBash脚本:每晚将sourcefiles移动到备份文件夹

LinuxBash脚本:每晚将sourcefiles移动到备份文件夹,bash,Bash,我们有一个cron作业来处理或处理一个目录中的许多输入源文件。处理后,将备份输入源文件。我们想编写一个脚本,将输入的源文件移动到目标备份文件夹 suprose输入源文件为/source/input/,备份文件夹为/target/backup/ bash脚本如下所示,注意:由于脚本被放入cron作业中,所以 1目录或文件路径最好作为绝对路径,以避免未找到的错误 2目标目录未与输入目录交叉。例如/源/输入/备份/ #!/bin/bash day=$(date +%Y%m%d) mkdir -p /t

我们有一个cron作业来处理或处理一个目录中的许多输入源文件。处理后,将备份输入源文件。我们想编写一个脚本,将输入的源文件移动到目标备份文件夹


suprose输入源文件为/source/input/,备份文件夹为/target/backup/

bash脚本如下所示,注意:由于脚本被放入cron作业中,所以

1目录或文件路径最好作为绝对路径,以避免未找到的错误

2目标目录未与输入目录交叉。例如/源/输入/备份/

#!/bin/bash
day=$(date +%Y%m%d)
mkdir -p /target/backup/$day/ && mv /source/input/* /target/backup/$day/

可能有一些小错误,因为我还没有真正测试过这个;但我很确定它会起作用。

在中,请注意“回答提问的问题”一节,以及“结束而不是回答未指定具体、狭窄问题的问题”的指导。为他人编写程序正是我们在这里不想做的。我道歉。我最近在这里看到了很多条目,其中有人基本上对问题进行了简单的描述,并说要解决它,以至于我开始认为这是正常现象。@petrus4实际上我已经回答了我自己的问题。我想我分享了这方面的知识,而且我的英语水平不好,所以你错过了我自己的答案。请注意,这种用法不推荐使用反勾号。所有符合1992年POSIX sh规范的Shell都支持$…,这是一种通常更安全的方法。正确嵌套不会改变backticks或backslash的含义。顺便说一句,您真的要修改源代码吗?这将使它不再存在于/source/input目录中,这看起来肯定是错误的。@charlesduff感谢Charles的精彩评论!不推荐使用backticks,这真的很好。我自己在最初遵循脚本时出现了类型错误。请参阅第二条注释,源文件夹不是源文件的uniqe副本。这只是为了便于维护。我有自己的答案。这是一个自我回答的问题。这是我自己知道的。和可能有同样兴趣的人分享。
#!/bin/sh -x

init() {

day=$(date +%Y%m%d)
mkdir -p /target/backup/"${day}"/

cat > edpop+.txt << EOF
1d
wq
EOF

cat > edprint+.txt << EOF
1p
q
EOF

cat > edrep+.txt << EOF
%s/^/\/source\/input\//
wq
EOF

ls -la /source/input | tr -s ' ' | cut -d' ' -f9 > stack+.txt
ed -s stack+.txt < edpop+.txt
ed -s stack+.txt < edpop+.txt
ed -s stack+.txt < edrep+.txt
next
}

end () {
rm -v edpop+.txt
rm -v edprint+.txt
rm -v edrep+.txt
exit 0
}

next () {
[[ -s stack+.txt ]] && main
end
}

main () {
line=$(ed -s stack+.txt < edprint+.txt)
mv -v "${line}" /target/backup/"${day}"/
ed -s stack+.txt < edpop+.txt
next
}

init