[英]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.