
同じログファイルの名前を別のパスに変更する方法を知りたいです。つまり、ログファイルは、/main/rel/1.2
などにあります。私はからのすべてのパスに対してのみこれを行いたいと思います。/main/rel/1.3
/main/rel/1.4
/main/rel/1.5
/main/rel
可能ですか?
答え1
find
名前を変更するすべてのファイルを検索し、スクリプトを実行するexec
ために使用されます: `
find /main/rel -name file.log -exec mv '{}' '{}.OLD' \;
これは見つかったすべてのファイルに対してmv
cmdを実行します。{}
(シェルが奇妙なことをしないようにエスケープされています)はファイル名に置き換えられます。これにより、.OLD
元のファイル名に追加の文字(追加の文字など)を簡単に追加できます。
とにかくチェックアウトはlogrotate
あなたがしたいことのために作られたツールです。ログファイルを回転させるだけでなく(; ;logfile
に名前を変更する、; にlogfile.0
移動する前に古いログファイルを圧縮して余分なスペースを消費しないように、非常に古いログファイルを削除するなど)、書き込み操作を行うデーモンに通知します。ログファイルに追加するには、新しいファイルで再度開く必要があるかもしれません(それ以外の場合は名前をに変更することができますが、サーバーがまだ...に追加されることがわかります)。logfiles.0
logfile.1
logfile
foobar.bak
foobar.bak
答え2
いいえ、これを行う単一のコマンドはないと思います。このファイルの名前を1つずつ変更できます。
/main/rel$mv 1.2/somelog 1.2/some_newlog; mv 1.3/somelog 1.3/some_newlog; mv 1.4/somelog 1.4/some_newlog
ちょっと待って...しかし、次のことを行うスクリプトを書くことができます。
#!/bin/bash
for dir in 1.{2..4}
do
`mv $dir/some.txt $dir/somenew.txt`
done
注:上記のスクリプトは "/main/rel"に保存する必要があり、このBashスクリプトはその場所でのみ実行する必要があります。