특정 루트 디렉토리의 특정 하위 문자열과 일치하는 파일 경로를 찾고 싶습니다.경로를 찾는 방법은 루트 디렉토리의 하위 문자열과 재귀 적으로 일치합니까?
다음은 내 셸 스크립트입니다. 하나씩 테스트 할 때 결과가 좋습니다. 하지만 루프 할 때 결과는 비어 있습니다. 그 원인에 대해 누가 조언 할 수 있습니까?
나는 지금
path=$(echo $LINE |cut -d'(' -f2|cut -d')' -f1)
에 의해 파일()의 내용을 추출
file('.*/cm-audio/src/main/*')
file('.*/cm-common/include/cm_common/utils/*')
filename=include_pattern
cat $filename | while read LINE
do
echo $LINE
path=$(echo $LINE |cut -d'(' -f2|cut -d')' -f1)
echo $path
result=$(find . -path $path)
echo $result
done
include_pattern 내 스크립트, I는 다음과 같은 경로를 찾아보십시오 하위 문자열 $ 경로
find . -path $path
결과가 비어 있습니다.
그러나 명령 줄에서 독립 실행 형으로 시도하면 경로 목록이 반환됩니다. 예 :
find . -path '.*/cm-audio/src/main*'
이 전체 스크립트가 작동하지 않는 이유는 아닙니다. 이것에 대해 조언 해 주시겠습니까? 같은 라인 포함 된 TEXTFILE에서 읽기 어디 당신을 생각 ...
filename='text_file_containing_include_pattern_on_each_line.txt'
while IFS='' read -r line || [[ -n "$line" ]]; do
path=$(echo "$line" |cut -d'(' -f2|cut -d')' -f1)
find \. -path "${path//\'}"
done < $filename
아 기다릴 :
패턴 파일에서'''을 제거하십시오. file (. */cm-audio/src/main/* ')'make'파일 (. */cm-audio/src/main/*)'- 또는 -'find. -path "$ {path // '}"' – jm666
내 대답의 편집 부분을 참조하십시오. – Montmons