![파일 검색을 수행할 때 ls 변수를 grep에 전달하는 것은 디렉터리 내에서만 작동합니다.](https://linux55.com/image/88317/%ED%8C%8C%EC%9D%BC%20%EA%B2%80%EC%83%89%EC%9D%84%20%EC%88%98%ED%96%89%ED%95%A0%20%EB%95%8C%20ls%20%EB%B3%80%EC%88%98%EB%A5%BC%20grep%EC%97%90%20%EC%A0%84%EB%8B%AC%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9D%80%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%20%EB%82%B4%EC%97%90%EC%84%9C%EB%A7%8C%20%EC%9E%91%EB%8F%99%ED%95%A9%EB%8B%88%EB%8B%A4..png)
폴더에서 최신 파일을 찾은 다음 일치하는 패턴에 대한 내용을 파악하는 명령을 실행하고 있습니다. 내가 겪고 있는 문제를 보여주는 명령 흐름은 다음과 같습니다.
root@backup /]# grep -w 'sucessfully completed.' "$(ls -1rt /var/log/folder | tail -n1)"
/bin/grep: <file_name>: No such file or directory
[root@backup /]# cd /var/log/folder/
[root@backup file_folder]# grep -w 'sucessfully completed.' "$(ls -1rt /var/log/folder | tail -n1)"
sucessfully completed.
첫 번째 명령에서는 파일을 찾았지만 그런 파일이나 디렉터리가 없다고 말합니다. 이상한. 그런 다음 보시다시피 실제 폴더에서 동일한 명령을 실행했는데 작동했습니다. 내 변수에는 절대 경로가 있는데 여기서 무슨 일이 벌어지고 있는 걸까요? 방해가 될 수 있는 grep 별칭을 확인했지만 아무 것도 발견되지 않았습니다. 변수를 사용하지 않고 별도로 명령을 실행하면 파일 폴더 외부에서도 작동합니다. (예상했던 대로)
[root@backup /]# grep -w 'sucessfully completed' /var/log/folder/file
sucessfully completed.
답변1
파일의 디렉터리 이름이 첫 번째 부분에 없습니다. 시도해 보세요.
grep -w 'sucessfully completed.' "/var/log/folder/$(ls -1rt /var/log/folder | tail -n1)"
시도하지 마세요.../var/log/folder/에 디렉토리가 없으면
grep -w 'sucessfully completed.' "$(ls -1rt /var/log/folder/* | tail -n1)"