![디렉터리의 텍스트 파일에서 호스트 이름을 찾아 디렉터리 이름을 호스트 이름으로 바꿉니다.](https://linux55.com/image/218423/%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%9D%98%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%ED%98%B8%EC%8A%A4%ED%8A%B8%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EC%B0%BE%EC%95%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%ED%98%B8%EC%8A%A4%ED%8A%B8%20%EC%9D%B4%EB%A6%84%EC%9C%BC%EB%A1%9C%20%EB%B0%94%EA%BF%89%EB%8B%88%EB%8B%A4..png)
/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 {} +
(GNU grep
및 GNU 가정 mv
, 테스트되지 않음)
이렇게 하려면 삭제하세요 echo
.