텍스트 파일을 붙여넣고 상위 디렉터리 이름을 각 열의 헤더로 추가합니다.

텍스트 파일을 붙여넣고 상위 디렉터리 이름을 각 열의 헤더로 추가합니다.

상위 폴더에는 내부에 여러 폴더가 있습니다. 각 폴더에는 "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

관련 정보