/root/test/access.log.1
to999
とtoに/root/test/error.log.1
ファイルがあります999
。
と同じ方法でaccess.log.1
名前を変更してにaccess.log.2
移動したいと思います。/var/log/archives/
error.log.1
error.log.2
私は次のことを試しました
#!/bin/bash
NEWFILE=`ls -ltr |grep error |tail -2 | head -1 |awk '{print $9}'`
for i in `ls -ltr |grep error |tail -1`;
do
mv "$i" /var/log/archives/"$NEWFILE"
done
ベストアンサー1
簡単なbash
スクリプト:
for file in {access,error}.log.{999..1}; do
echo "$file" "/path/to/dest/${file//[0-9]}$((${file//[a-z.]}+1))";
done
${file//[0-9]}
error.log.
、数字を削除するか、部分を生成する文字のみを保持しますaccess.log.
。${file//[a-z.]}
、文字とドットのみを削除します(ファイル名パターンのために書きましたa-z.
)。これにより、数値部分が生成されます。$((${file//[a-z.]}+1))
上記で作成した数字に1を追加します。
これにより、ファイル名が次のように変更され、次の場所に移動します/path/to/dest/
。
access.log.999 --> /path/to/dest/access.log.1000
access.log.998 --> /path/to/dest/access.log.999
...
error.log.999 --> /path/to/dest/error.log.1000
error.log.998 --> /path/to/dest/error.log.999
...
echo
mv
ファイルの名前を変更すると、練習の実行が置き換えられます。