目录结构是:mydir下有同级的三个目录:archive log data
这个shell是在特定的时间运行的,主要的功能是将log目录下的文件移到archive目录下,文件名的要求是在原来的文件名加上时间戳(年月日,如20111122)。
另一个功能是删除data目录下21天前的文件,data目录下可能有多级目录,所以需要递归删除。
#!/bin/sh
# If the directory is not exist, create it first.
namefordir="/mydir/archive"
if [ ! -d $namefordir ]; then
mkdir $namefordir
fi
# Move file to archive directory and retain last modified time
cd log
# Find files that modified in one day
# find . -type f -mtime -1
FILE_DATE=`date +%Y%m%d`
for file in `ls`
do
# Get the last modified format time, like as: 201101100900.01
filetime=`ls --time-style=+%Y%m%d%H%M.%S -l "$file"|awk '{print $6}'`
# New file name
newfilename="$namefordir/$file.$FILE_DATE"
mv $file $newfilename
touch -m -t $filetime $newfilename
done
# Judge which file can be deleted, here remove the file older than 21 days
delFileByTime(){
echo "run delFileByTime() $1"
file_time=`stat -c%Y "$1"`
local_time=`date +%s`
n=$(( $local_time - $file_time ))
if [ "$n" -ge "1814400" ]; then
rm "$1"
echo "delete successful $1"
else
echo "The file < $1 > needn't to delete"
fi
}
# Process to recursively delete all files older than a given date
delFiles(){
echo "run delFiles()"
for dirfile in `ls "$1"`
do
if [ -d $1/$dirfile ]; then
echo "fun-this dir is $dirfile"
delFiles $1/$dirfile
else
echo "fun-this is a file $dirfile"
delFileByTime $1/$dirfile
fi
done
}
# Remove all data files older than 21 days from data directory
cd ../data
for deletefile in `ls`
do
if [ -d $deletefile ]; then
echo "main-this dir is $deletefile"
delFiles $deletefile
else
echo "main-this file is $deletefile"
delFileByTime $deletefile
fi
done
分享到:
相关推荐
Proper usage of shell commands can easily solve many complex tasks with a few lines of code, but most linux users don't have the right know-how to use the Linux shell to its full potential. ...
Proper usage of shell commands can easily solve many complex tasks with a few lines of code, but most linux users don't have the right know-how to use the Linux shell to its full potential. ...
Shell scripting is a quick method to prototype a complex application or a problem by automating tasks when working on Linux-based systems. Using both simple one-line commands and command sequences ...
Shell scripting is a quick method to prototype a complex application or a problem by automating tasks when working on Linux-based systems. Using both simple one-line commands and command sequences ...
Linux Shell Scripting Cookbook - Third Edition by Clif Flynt English | 29 May 2017 | ASIN: B01N80F75Z | 552 Pages | AZW3 | 1.36 MB Do amazing things with the shell About This Book Become an expert ...
Shell scripting is a quick method to prototype a complex application or a problem by automating tasks when working on Linux-based systems. Using both simple one-line commands and command sequences ...
Then, you'll learn how to write a simple bash script and how to edit your bash script using Linux editors. Following this, you will learn how to define a variable and the visibility of a variable. ...
Shell scripting is a quick method to prototype a complex application or a problem by automating tasks when working on Linux-based systems. Using both simple one-line commands and command sequences ...
hdu-OS-simple-shell,Linux_的_Shell_命令窗口_demo_版实现_shell-demo
C语言实现的简单命令行解析器(Simple shell) 支持用户输入命令行并在后台运行即&后台命令运行模式 支持history命令功能,用户可以查看最近使用的10条命令行,并且调用他们。
例如`# This is a very simple example`这一行就说明了这是一个简单的示例程序。 - **echo命令**:`echo`是一个常用的命令,用于输出文本到标准输出。例如`echo "Hello World"`会打印出`Hello World`到终端。值得...
Using simple commands or a combination of them in a shell can solve complex problems easily. This book starts with the basics, including essential commands that can be executed on Linux systems to ...
【Linux Shell 快速入门】Linux Shell,全称为Bash(Bourne-Again SHell),是Unix和Linux操作系统中最常用的命令行解释器。Bash不仅用于接收用户在终端中的命令,还支持脚本编写,使得自动化任务处理变得简单高效。...
Shell scripting is a quick method to prototype a complex application or a problem by automating tasks when working on Linux-based systems. Using both simple one-line commands and command sequences ...
The next task is to modify the shell interface program so that it provides a history feature that allows the user to access the most recently entered commands. The user will be able to access up to 10...
Solve real-world shell scripting problems with over 110 simple but incredibly effective recipes Master the art of crafting one-liner command sequence to perform tasks such as text processing, digging...
Linux Bash Shell 中文手册是为Linux用户和系统管理员提供的一份详细指南,涵盖了Bash Shell的基本用法和高级特性。Bash(Bourne-Again SHell)是GNU项目下的Unix/Linux操作系统默认的命令行解释器,它继承并扩展了...