繁体   English   中英

每次在Linux上运行Shell脚本时都会创建一个新目录

[英]creating a new directory each time a shell script is run on linux

我正在尝试创建一个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脚本中是可能的。 谢谢大家的帮助,不胜感激!

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

#!/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开始并从那里继续

如果您不关心递增目录名称,则可以使用简单的时间戳记来实现:

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

只要您的复制操作少于每秒一次,就可以使用。

您可以尝试使用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等等...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM