여러 하위 폴더가 있는 디렉터리가 있고 모든 하위 폴더에는 여러 텍스트 파일이 포함되어 있으며 이러한 텍스트 파일의 형식은 다음과 같습니다.
data01:data02
나중에 data02를 추출하여 :
루트 디렉터리의 단일 파일로 내보내야 합니다. 추출을 완료했지만 여러 디렉터리와 파일에서 어떻게 실행합니까?
답변1
"find" 및 "awk"를 사용하여 다음 명령줄을 사용자 정의할 수 있습니다.
find FOLDERLIST -type f -iname "PATTERN" \
-exec awk -F":" 'NF>1 {print $2}' "{}" \; > /PATH/TO/RESULTFILE
어디
- FOLDERLIST는 재귀적으로 검색할 최상위 폴더의 공백으로 구분된 목록입니다. 여기서 "현재 폴더"는 점입니다( find ). - F를 입력하세요...
- "-type f"는 파일 검색에만 사용됩니다.
- PATTERN은 관심 있는 파일에 대한 일반적인 패턴입니다. 예를 들어 별표 "*"는 모든 파일을 찾고, "*.csv"는 CSV 파일을 찾습니다...
- /PATH/TO/RESULTFILE은 루트 디렉터리에 있는 결과 파일의 이름입니다.
- "awk" 부분은 ":"에서 발견된 모든 파일을 분할하고 빈 결과를 건너뜁니다.
편집: Steeldriver가 제안한 대로 null 결과 검사를 NF>1로 조정했습니다.
답변2
출력 파일의 형식을 제공하지 않았으므로 두 번째 필드가 별도의 줄에 있기를 원한다고 가정합니다. 다음을 사용할 수 있습니다(모든 파일이 a:b
질문에 언급한 형식이라고 가정 ).
find directory -type f \
-exec awk -F: '{print $2}' "{}" >> /output.txt \;
directory
하위 디렉토리에서 파일을 찾아 명령을 실행하면 결과 awk -F: '{print $2}' "{}" >> /output.txt
값이 :
file에 기록됩니다 /output.txt
.