每次在linux上运行shell脚本时创建一个新目录

时间:2016-08-02 10:28:46

标签: linux bash shell scripting

我正在尝试创建一个shell脚本,将.log文件从一个目录复制到一个新目录,每次运行脚本时都会使用一个新名称。

例如,假设/home/usr/logs

中有File1.log,File2.log,File3.log

当此脚本运行时,我希望将它们复制到新位置/home/usr/savedlogs/Run1,然后下次运行... /home/usr/savedlog/Run2等等......

我不确定是否会使用它:

  

cp /home/usr/logs/{File1.log,File2.log,File3.log} / home / usr / savedlogs

我希望在shell脚本中可以实现这一点。非常感谢大家的帮助,非常感谢!

3 个答案:

答案 0 :(得分:3)

这是一个简单的脚本,可能满足您的要求:

#!/bin/bash

# Get the number of Run* directories present
newnum=$(ls -ld /home/usr/savedlogs/Run* 2>/dev/null | wc -l)

mkdir -p /home/usr/savedlogs/Run${newnum}

cp /home/usr/logs/*.log /home/usr/savedlogs/Run${newnum}

这将从Run0开始,然后从那里继续

答案 1 :(得分:1)

如果您不关心增加目录名称,可以使用简单的时间戳来执行此操作:

DIR=$(date +%Y%m%d%H%M%S)
mkdir $DIR
cp /home/usr/logs/FileXXX.log /home/usr/savedlogs/$DIR/

只要你的复制操作每秒发生不到一次就会有效。

答案 2 :(得分:0)

您可以尝试newDir=$(ls -l /home/usr/savedlogs | grep Run | wc -l)获取现有的目录数。

所以整个脚本看起来像这样:

    newDir=$(ls -l /home/usr/savedlogs | grep Run | wc -l)
    mkdir -p /home/usr/savedlogs/Run${newDir}
    cp /home/usr/logs/*.log /home/usr/savedlogs/Run${newDir}

第一个文件夹是Run0,下一个是Run1,依此类推......