파일 검색을 수행할 때 ls 변수를 grep에 전달하는 것은 디렉터리 내에서만 작동합니다.

파일 검색을 수행할 때 ls 변수를 grep에 전달하는 것은 디렉터리 내에서만 작동합니다.

폴더에서 최신 파일을 찾은 다음 일치하는 패턴에 대한 내용을 파악하는 명령을 실행하고 있습니다. 내가 겪고 있는 문제를 보여주는 명령 흐름은 다음과 같습니다.

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)"

관련 정보