2014-03-18 4 views
0

아직도 bash 프로그래밍을 처음 시작하는 초보자입니다. 나는 다른 작업을하고 있습니다. ".dump"라는 특정 파일 (예 : 처음에 점이 있음)은 각 폴더에 있으며 항상 세 개의 숫자가 들어 있습니다. 세 번째 숫자를 1000보다 큰 경우 변수에 덤프하고이 번호와 번호를 찾는 폴더 이름을 인쇄해야합니다. 그래서 결과는 다음과 같아야합니다다른 폴더에있는 파일의 내용을 재귀 적으로 덤프합니다.

"/dir1/ 1245" 
"/dir1/subdir1/ 3434" 
"/dir1/subdir2/ 10003" 
"/dir1/subdir2/subsubdir3/ 4123" 
"/dir2/ 45440" 

(without "" and each of them in a new line (not sure, why it is not shown correctly here))

을 내가 awk, findwhile 놀아했지만, 결과는 내가 싶지을 나쁜 것을 나는 희망한다, 여기를 게시하는 것이 있습니다 이해했다. 따라서 어떤 코드 스 니펫도 도움이됩니다.

+0

'bash'의 어떤 버전을 사용하고 있습니까? 순전히 셸에서이 작업을 단순화하는 몇 가지 기능이 있습니다. – chepner

+0

버전 3.2.39. –

답변

1

이 정리 될 수 있지만 작동합니다 :

find /dir1 /dir2 -name .dump -exec sh -c 'k=$(awk "\$3 > 1000{print \$3; exit 1}" $0) || 
    echo ${0%.dump} $k ' {} \; 

(나는 당신의 .dump 파일의 모든 세 개의 숫자는 한 줄에 나타나는 가정하고있어 AWK 입력하면 수정해야합니다.) 다른 형식입니다.)

+0

지금까지 감사드립니다. 그러나 dir1과 dir2만이 유일한 디렉토리는 아닙니다. 수 천명의 사람들이 서로 다른 이름을 가지고 있습니다. 나는 물건을 단순화하려고 노력했다. 그러나 나는 약간의 혼란을 일으켰다. 나는 그것에 대해 사과한다. –

+0

모든 디렉토리가 공통 부모를 공유하는 경우 find의 첫 번째 인수로 상위 경로를 전달하십시오. 그것은 재귀적인 하강을 할 것입니다. –

관련 문제