![Linux: 디렉터리 트리에서 *.log 파일을 찾아 각 파일에 마지막 10줄을 씁니다.](https://linux55.com/image/118828/Linux%3A%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%20%ED%8A%B8%EB%A6%AC%EC%97%90%EC%84%9C%20*.log%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EC%95%84%20%EA%B0%81%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EB%A7%88%EC%A7%80%EB%A7%89%2010%EC%A4%84%EC%9D%84%20%EC%94%81%EB%8B%88%EB%8B%A4..png)
/var 디렉토리와 모든 트리 디렉토리에서 .log로 끝나는 모든 파일을 찾아 각 *.log 파일의 마지막 10줄을 작성해야 합니다.
cd /var sudo find -name '*.log' -print
이 명령을 사용하면 이러한 파일을 찾을 수 있습니다. 내가 보는 것은: 인쇄 라인을
./log/auth.log ./log/Xorg.0.log .... ./log/apt/term.log .log/alternatives.log
사용하려고 하는데
for var in sudo find -name '*.log'; do tail -n 10 $var; done
오류가 발생합니다. 그렇다면 파일을 찾고 행을 인쇄하려면 어떤 명령을 사용해야 합니까?
답변1
이 시도:
find /var -name "*.log" -type f -exec tail '{}' +
설명하다:
-type f
- 파일만 찾기
-exec <command> {} +
- 명령을 실행합니다. 자세한 내용은 man find를 참조하세요.
또는:
for i in $(find /var -name "*.log" -type f); do echo $i; tail $i; done
동일한 출력을 얻지만 형식이 약간 다릅니다.