파일을 읽는 데 쉘 사용에 관한 질문이 있습니다.파일 이름 접두어 검사는 항상 bash로 실패합니다.
폴더
- new_file.log (이 파일입니다)
- new_file2.log (이 파일입니다)
- new_file3.log : 그건 내가 이런 폴더가, 말을하는 것입니다
- new_file_from_subfolder.log 새로운
- (이 하위 폴더 인) (이 파일입니다)
- new_file2_from_subfolder.log
- new_file3_from_subfolder.log
는 내가 원하는 (직접) 파일이 아닌 하위 폴더에서 파일의 모든 내용을 읽을 것입니다. 위의 경우, new_file.log에 new_file.log가 필요합니다.
나는 간단한 방법이 알고
$ cat new*.log
은 그러나 나는 또한 bash는 스크립트를 작성 :
for file in $(ls -a)
do
if [[ "$file" != "." && "$file" != ".." ]]; then
if [[ -f "$file" && "$file" == "^new" ]]; then **here is the problem**
[do something]
fi
fi
done
내 문제는 위와 같이 표시됩니다. bash 코드는 doesnot처럼 보입니다
"$file" == ^new
만약 내가 bash를 돌리면 기본적으로 아무것도하지 않습니다. 이는 파일이 조건을 만족시키지 못한다는 것을 의미합니다. 뭐가 잘못 되었나요?
** 스크립트에서'ls'을 사용하지 마십시오. http://mywiki.wooledge.org/ParsingLs –
을보십시오 ... 만일 당신이'for file * '을 숨겨진 파일들에 대해 반복하고 싶다면,'shopt -s dotglob'가 그 효과를 가질 것입니다. –
...또한 수학 환경을 제외하고는 쉘에서'=='를 사용하는 습관이별로 좋지 않습니다. POSIX는'test'에 대해 숫자가 아닌 항등 연산자로'='를 지정합니다; '=='를 지원하는 쉘은 비표준 위임 확장으로 사용됩니다. 어쨌든 POSIX가 아니기 때문에'[[]]'의 실천이 좋지는 않지만 핑거 메모리가 (안전)'[[$ foo == $ bar]]를 (안전하지 않은)''$ foo "=="$ bar "]'또는''$ foo"== "$ bar"'테스트 할 수 있습니다. –