같은 이름의 파일을 다른 디렉토리에 붙여넣는 방법은 무엇입니까?

같은 이름의 파일을 다른 디렉토리에 붙여넣는 방법은 무엇입니까?

다른 질문이 있습니다.

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

카탈로그 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

관련 정보