터미널을 사용하여 동일한 이름을 가진 특정 하위 디렉터리에 파일을 복사하려면 어떻게 해야 합니까?

터미널을 사용하여 동일한 이름을 가진 특정 하위 디렉터리에 파일을 복사하려면 어떻게 해야 합니까?

동일한 이름을 가진 모든 하위 디렉터리에 4개의 파일을 복사하고 싶습니다. 예제 디렉토리는 다음 위치에 있습니다.

/toplevel/images/sources

또 하나가 들어있어요

/toplevel/documents/files/sources

"sources"라는 다른 하위 디렉터리에도 이러한 파일이 모두 포함되어야 합니다. "최상위" 디렉터리에서 이 작업을 수행하려면 cp 명령을 어떻게 사용합니까?

답변1

다음 명령을 사용하여 모든 디렉터리 목록을 가져올 수 있습니다 find. 예를 들면 다음과 같습니다.

$ find /toplevel -name sources -type d
/toplevel/documents/files/sources
/toplevel/images/sources

-name sourcesfind이름이 있는 결과만 알려주고 디렉터리 sources-type d표시하도록 필터링합니다. 이것을 for 루프와 결합하면 /myfiles디렉토리(예를 들어)의 모든 파일을 여기에 복사할 수 있습니다.

$ for directory in $(find /toplevel -name sources -type d); do cp /myfiles/* "$directory"; done
$ tree /toplevel
/toplevel
├── documents
│   └── files
│       └── sources
│           ├── file_1
│           ├── file_2
│           ├── file_3
│           └── file_4
└── images
    └── sources
        ├── file_1
        ├── file_2
        ├── file_3
        └── file_4

5 directories, 8 files

관련 정보