更改不同路径中的文件名

更改不同路径中的文件名

我想知道如何重命名不同路径中的同一日志文件。我的意思是,日志文件位于/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,{}(转义以便 shell 不会做奇怪的事情)将被文件名替换。这使您可以轻松地向原始文件名添加额外的字符(例如append .OLD)。

无论如何, checkoutlogrotate是一个为您想做的工作而创建的工具。它不仅为您轮换日志文件(例如,重命名logfilelogfile.0; 但在移动logfiles.0logfile.1; 之前,压缩较旧的日志文件,这样它们就不会占用太多空间;删除非常旧的日志文件),而且还会通知写入日志文件的守护进程,它可能需要重新打开新的(否则您可能会将您的名称重命名logfilefoobar.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 脚本。

相关内容