我正在尝试创建一个shell脚本,将.log文件从一个目录复制到一个新目录,每次运行脚本时都会使用一个新名称。
例如,假设/home/usr/logs
当此脚本运行时,我希望将它们复制到新位置/home/usr/savedlogs/Run1
,然后下次运行... /home/usr/savedlog/Run2
等等......
我不确定是否会使用它:
cp /home/usr/logs/{File1.log,File2.log,File3.log} / home / usr / savedlogs
我希望在shell脚本中可以实现这一点。非常感谢大家的帮助,非常感谢!
答案 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
,依此类推......