새 파일을 터치하자마자 ls 명령과 grep 작동이 중지됩니다.

새 파일을 터치하자마자 ls 명령과 grep 작동이 중지됩니다.

내 홈 디렉토리에서 특정 확장자를 가진 모든 파일을 찾으려고 합니다. 파일 확장자의 인스턴스가 하나만 있으면 ls 명령이 제대로 작동하지만 동일한 확장자를 가진 새 파일을 터치하자마자 ls 명령은 아무것도 반환하지 않습니다.

무슨 일이 일어나고 있는지 잘 모르겠습니다. 누군가가 나를 올바른 방향으로 안내하는 데 도움을 줄 수 있다면 좋을 것입니다.

여기에 이미지 설명을 입력하세요.

답변1

쉘은 와일드카드 문자를 파일로 확장하므로 항상 정규식을 작은따옴표로 묶으십시오.

그래서:

ls -1 | grep '\.java$'

불필요한 와일드카드 문자를 제거했습니다.

그러나 ls출력을 구문 분석하는 것은 좋은 생각이 아닙니다 find. 다음을 제안합니다.

find . -name '*.java'

재귀적으로 검색하거나

find . ! -name . -prune -name '*.java'

또는 GNU와 호환되거나 find:

find . -name '*.java' -mindepth 1 -maxdepth 1

현재 디렉토리만 검색합니다.

.이 특별한 경우에는 깊이 0 (파일 검색을 시작하도록 지정한 현재 작업 디렉터리 ) 에 있는 유일한 파일이 find패턴과 일치하지 않으므로 *.java생략할 수 있습니다 -mindepth 1.

관련 정보