2017-04-05 6 views
0

내가 그 안에 서브 디렉토리의 많은 파일과 디렉토리에 주어진 문자열로 일부 파일을 찾기 위해 노력하고있어 가장 적절한 방법

내가 알고 정규식/글로브 표현 대상 파일을 일치하고 다른 명령에서 중간 디렉토리의 이름. 예 디렉토리 목록 명령 출력 :

1234 
5321 
4546 
2456 

내가 찾아 그렙를 사용하여 할 노력하고있어,하지만 난 xargs를을 사용하여 찾을 제대로 디렉토리 이름을 전달할 수 없습니다. 최종 명령은 다음과 같습니다

commandOutputDirs | xargs -d\n find /path/to/search/*/{} -type f -name "*fileName*" 

하지만 오류 다음 얻을 =

내가 사용하는 에코 대신

/경로 /로/검색/*/{}

을 찾으려고 find: paths must precede expression: 1234

,691로 평가

/경로/to/search/path 1234

동일한 효과를 얻기 위해 이러한 인수를 전달해야합니까?

while read line; do find /path/$line -type f -name "*filename* < pattern.txt 

는 명령 줄 출력은 다음과 같이 할 경우 :

commandLineOutput | while read line; do find /path/$line -type f -name "*filename* 
+0

실제로 무엇을하려고하는지 이해하기 어렵습니다. 내용물에 문자열이 들어있는 파일을 찾으십니까? 아니면 이름에 주어진 문자열이 들어있는 파일을 찾고 있습니까? 또는 경로에 주어진 문자열이 들어있는 파일을 찾으십니까? 그리고 그 파일을 찾을 때 그 파일들로 무엇을하고 싶습니까? –

+0

불명확해서 죄송합니다. 주어진 문자열이 특정 이름의 파일에있는 일부 디렉토리에 있는지 알아야합니다 (로그 파일에서 오류를 찾고 있습니다). ** commandOutputDirs **에서 파일을 찾을 하위 디렉토리의 이름을 얻을 수 있습니다. 또한 나중에 찾을 문자열의 파일 이름도 알고 있습니다. 나는 파일 목록을 얻고 그 문자열을 찾기 위해 grep하고 싶다. – mtraton

+0

좋아요? find/tmp/etc// some/Where/Else -type f ... –

답변

0

당신이 이런 식으로 할 수

usr 
etc 
var 

를 포함하는 파일 pattern.txt을 말해봐