異なるパスのファイル名の変更

異なるパスのファイル名の変更

同じログファイルの名前を別のパスに変更する方法を知りたいです。つまり、ログファイルは、/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' \;

これは見つかったすべてのファイルに対してmvcmdを実行します。{}(シェルが奇妙なことをしないようにエスケープされています)はファイル名に置き換えられます。これにより、.OLD元のファイル名に追加の文字(追加の文字など)を簡単に追加できます。

とにかくチェックアウトはlogrotateあなたがしたいことのために作られたツールです。ログファイルを回転させるだけでなく(; ;logfileに名前を変更する、; にlogfile.0移動する前に古いログファイルを圧縮して余分なスペースを消費しないように、非常に古いログファイルを削除するなど)、書き込み操作を行うデーモンに通知します。ログファイルに追加するには、新しいファイルで再度開く必要があるかもしれません(それ以外の場合は名前をに変更することができますが、サーバーがまだ...に追加されることがわかります)。logfiles.0logfile.1logfilefoobar.bakfoobar.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スクリプトはその場所でのみ実行する必要があります。

関連情報