다른 디렉터리에서 같은 이름을 가진 파일을 어떻게 붙여넣을 수 있나요?

다른 디렉터리에서 같은 이름을 가진 파일을 어떻게 붙여넣을 수 있나요?

다른 질문이 있습니다.

세 개의 다른 디렉토리가 있지만 내부에는 동일한 이름의 동일한 파일이 있습니다. 예를 들어:

디렉터리1:

dir1/file1.txt
dir1/file2.txt
dir1/file3.txt

디렉터리2:

dir2/file1.txt
dir2/file2.txt
dir2/file3.txt

디렉토리3:

dir3/file1.txt
dir3/file2.txt
dir3/file3.txt

같은 이름의 파일을 붙여넣고 싶습니다. 좋아요:

dir1/file1.txt+ dir2/file1.txt+ dir3/file1.txt=file1.txt

dir1/file2.txt+ dir2/file2.txt+ dir3/file2.txt=file2.txt

dir1/file3.txt+ dir2/file3.txt+ dir3/file3.txt=file3.txt

내가 어떻게 해?

답변1

파일 내용을 연결하려면 다음을 수행하십시오.

cat dir*/file1 > file1
cat dir*/file2 > file2
cat dir*/file3 > file3

와일드카드를 사용하면 cat 명령이 패턴과 일치하는 모든 디렉토리/파일의 내용을 읽게 되므로 결과 파일에 기록된 세 디렉터리 모두에서 동일한 이름을 가진 파일의 내용을 얻게 됩니다.

답변2

디렉터리 이름만 알고 파일 이름은 모른다고 가정하면 디렉터리 중 하나의 파일 이름을 배열에 저장한 다음 요소를 반복하여 디렉터리 이름을 제거하고 각 디렉터리에서 결과 파일 이름을 붙여넣을 수 있습니다.

files=(dir3/*)
for p in "${files[@]}"; do 
f=${p#*/}; paste dir1/"$f" dir2/"$f" dir3/"$f" > "$f"; done

쉘이 확장하도록 glob을 사용하면 더 짧게 골프를 칠 수 있다는 점에 유의하십시오(디렉토리 이름은 사전순으로 사용됩니다). 예:

for p in "${files[@]}"; do f=${p#*/}; paste dir*/"$f" > "$f"; done

관련 정보