我想知道如何重命名不同路径中的同一日志文件。我的意思是,日志文件位于/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,{}
(转义以便 shell 不会做奇怪的事情)将被文件名替换。这使您可以轻松地向原始文件名添加额外的字符(例如append .OLD
)。
无论如何, checkoutlogrotate
是一个为您想做的工作而创建的工具。它不仅为您轮换日志文件(例如,重命名logfile
为logfile.0
; 但在移动logfiles.0
到logfile.1
; 之前,压缩较旧的日志文件,这样它们就不会占用太多空间;删除非常旧的日志文件),而且还会通知写入日志文件的守护进程,它可能需要重新打开新的(否则您可能会将您的名称重命名logfile
为foobar.bak
,却发现服务器不断追加到foobar.bak
...)
答案2
不,我认为没有一个命令可以做到这一点。您可以将这些文件一一重命名。
/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 脚本。