任務場景
文件夾下持續進入文件,每隔10分鐘進行文件清理操作,壓縮轉移至備份服務器。
實現代碼
#!/bin/bash
targetDIR=/aaa
backDIR=/bbb
cd $ targetDIR
for name in *
do
nowTime=`date "+Y%m%d_%H%M%S"`
cd $name
if ls *.txt > /dev/null 2>&1 ; then
mv *.txt $backDIR/$name/
tar -zcvf $nowTime"_"$name.tar.gz *.txt
rm *.txt
cd $targetDIR
done
exit 0
代碼解析
循環遍歷文件夾進行文件獲取,尤其需要注意該部分:
if ls *.txt > /dev/null 2>&1 ; then
ls所有以.txt爲後綴的文件,如果不存在,將標準錯誤重定向到標準輸出,這裏2>&1 的意思就是將標準錯誤也輸出到標準輸出當中。重定向中 0-標準輸出,1-標準輸出,2-標準錯誤,而No such file or directory是一個標準錯誤。如果未添加該部分,如果未查到文件,則會導致後續命令無法順序執行。