在目录中的文本文件中查找主机名,并将目录重命名为主机名

在目录中的文本文件中查找主机名,并将目录重命名为主机名

主机名包含在文本文件中,/sys/info格式如下

Host Name: xxxxxxx

我想xxxxxxx从中获取主机名(在本例中为)/sys/info并将父目录重命名为与该主机名相同。

答案1

假设您想要查找sys/info其中包含文件的目录并将它们重命名Host name为该文件内部,则可能类似于:

LC_ALL=C find . -depth -path './*/sys/info' -type f -exec sh -c '
  for file do
    if host=$(grep -Poxm1 "Host Name:\s*\K\S+" < "$file"); then
       echo mv -iT -- "${file%/sys/info}" "${file%/*/sys/info}/$host"
    fi
  done' sh {} +

(假设 GNUgrep和 GNU mv;未经测试)。

删除即可echo执行此操作。

相关内容