![텍스트 파일을 붙여넣고 상위 디렉터리 이름을 각 열의 헤더로 추가합니다.](https://linux55.com/image/98392/%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%B6%99%EC%97%AC%EB%84%A3%EA%B3%A0%20%EC%83%81%EC%9C%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EA%B0%81%20%EC%97%B4%EC%9D%98%20%ED%97%A4%EB%8D%94%EB%A1%9C%20%EC%B6%94%EA%B0%80%ED%95%A9%EB%8B%88%EB%8B%A4..png)
상위 폴더에는 내부에 여러 폴더가 있습니다. 각 폴더에는 "text.txt"라는 텍스트 파일이 있습니다. 모든 폴더의 텍스트 파일은 유사하며 각각 100줄과 숫자 열을 포함합니다. 예
cat /folder1/text1.txt
1654
1684
535
35131
.
.
command 을 사용하여 이러한 모든 텍스트 파일을 하나의 파일에 있는 열로 병합하고 싶습니다 paste
. 상위 폴더에서 명령을 실행했습니다.
paste ./*/text*.text > all_text.txt # the content for all_text.txt is as follow:
cat all_text.txt
1654 354531 ....
1684 224
535 2424
35131 24
.
.
.
붙여넣은 각 열의 헤더로 폴더 이름을 추가하여 다음 출력을 얻으려면 어떻게 해야 합니까?
cat all_text.txt
folder#1 folder #2 .....
1654 354531
1684 224
535 2424
35131 24
.
.
.
답변1
set
각 배열 요소에 매개변수 확장을 사용하여 디렉토리 이름만 인쇄할 수 있습니다 .
set -- */text.txt
{ printf ' %s' "${@%/*}" | cut -c2-; paste -- "$@"; }
# this blank ^ is a literal tab