2012-02-24 6 views
0

파일의 내용을 에코하기 위해 쉘 스크립트를 만들려고합니다. 파일의 위치를 ​​알 수 없습니다. 내 파일이 나는 그것이 GREP와 경로의 검색하려고 그렇게 알 수없는 하위 폴더에있을 수있는 곳쉘 스크립트가 파일을 검색 한 다음 파일의 내용을 에코합니다.

$echo | ls /* | grep file.xml 

:

나는이 같은 될 것이라고 생각했다.

올바른 구문에 대한 도움을 주시면 매우 감사하겠습니다.

답변

5

당신은 find를 사용할 수 있습니다

find/-name file.xml -exec cat '{}' ';' 

//와 그 하위 디렉토리에서보고 말한다; -name file.xmlfile.xml이라는 파일을 찾는다 고 말합니다. -exec cat '{}' ';'이 실행되도록 말하면, 예를 들어 내용을 인쇄하는 각 파일에 대해 cat /path/to/file.xml입니다.

0

나는 고양이 파일을 원한다고 생각합니다. 일치하는 항목이 여러 개있는 경우 모든 파일이 인쇄됩니다. 권한이 충분하지 않은 경우 필터링해야하는 권한 오류가 발생할 수 있습니다. 이를 방지하려면 권한이있는 디렉토리에서만 실행하고, 확대 된 권한으로 실행하거나 grep을 사용하여 제거하십시오. 시도 :

cat `find/-name file.xml` 
+0

Re : "또는 grep을 사용하여 제거하십시오": 권한 오류 메시지는 표준 오류로 진행되므로, 어떤 식 으로든'grep'을 쓰는 대신 논리적 인 방법으로'2>/dev/null'. 또한'file.xml'의 경로에 공백, 물음표 또는 별표가 포함되어 있으면 명령이 잘못 될 것입니다. – ruakh

0

이 시도 :

grep -lr "alice in wonderland" * 

이 텍스트 alice in wonderland를 포함하는 모든 파일을 나열합니다. 각의 내용을 표시하려면 다음을 수행

grep -lr "alice in wonderland" *|while read filename; do 
    echo ---- Contents of: "$filename" 
    cat "$filename" 
done 
관련 문제