我想将TLR
文件以及所有*.log
和*.ini
移至在/app/hard/ec4rd/ec4rd_backup/mmddyyyy_[Run_Number]
中称为日期的特定文件夹中。
[Run_Number]
应该基于计数器来确定。
如果是第一次运行,则应为1。
例如:如果/u01/app/ec4rd/ec4rd_backup/06202019_1
已经存在,则应创建一个新目录/app/hard/ecm2fs/KADE_TLE_Backup/06202019_2
,文件应移至该目录,依此类推。
有人可以帮助我如何使用unix shell脚本吗?
下面是我的代码
#!/usr/bin/ksh
date=`date +"%m%d%Y"`;
cd /app/hard/ec4rd/ec4rd_backup/;
if [ ! -d "$date"_1 ];
then
mkdir "$date"_1;
find /app/hard/ec4rd/ec4rd_backup/*.ini -type f -mtime -1 | xargs -n1 -i mv {} /app/hard/ec4rd/ec4rd_backup/"$date"_1/;
find /app/hard/ec4rd/ec4rd_backup/*.log -type f -mtime -1 | xargs -n1 -i mv {} /app/hard/ec4rd/ec4rd_backup/"$date"_1/;
find /app/hard/ec4rd/TLR -type f -mtime -1 | xargs -n1 -i mv {} /app/hard/ec4rd/ec4rd_backup/"$date"_1/;
elif [ -d "$date"_1 ];
then
mkdir "$date"_2;
find /app/hard/ec4rd/ec4rd_backup/*.ini -type f -mtime -1 | xargs -n1 -i mv {} /app/hard/ec4rd/ec4rd_backup//"$date"_2/;
find /app/hard/ec4rd/ec4rd_backup/*.log -type f -mtime -1 | xargs -n1 -i mv {} /app/hard/ec4rd/ec4rd_backup//"$date"_2/;
find /app/hard/ec4rd/TLR -type f -mtime -1 | xargs -n1 -i mv {} /app/hard/ec4rd/ec4rd_backup/"$date"_2/;
fi
答案 0 :(得分:0)
通过搜索不存在的目标目录,可以轻松地概括当前代码:
#!/usr/bin/ksh
date=`date +"%m%d%Y"`
cd /app/hard/ec4rd/ec4rd_backup
counter=1
while target="$date"_$counter; [ -d $target ]
do ((++counter))
done
mkdir $target
find /app/hard/ec4rd/ec4rd_backup/*.ini -type f -mtime -1 |
xargs -n1 -i mv {} /app/hard/ec4rd/ec4rd_backup/$target
…