기본 디렉터리의 단일 파일을 내의 모든 디렉터리에 걸쳐 반복적으로 복사합니다.

기본 디렉터리의 단일 파일을 내의 모든 디렉터리에 걸쳐 반복적으로 복사합니다.

저는 CentOS를 사용하는 전용 서버를 사용하고 있으며 이 서버에는 하나의 기본 디렉터리에 5000개 이상의 디렉터리가 있습니다.

기본 디렉토리에는 index.php. 나는 이것을 5000개 이상의 모든 디렉토리에 복사하고 싶지만 index.php, 내가 아는 유일한 방법은 수동으로 수행하는 것입니다.

cp명령줄을 통해 다음과 같은 것을 입력 하고 디렉터리에서 작동하게 할 수 있는 방법이 있습니까 ? 나는 모든 디렉토리와 내가 시작하는 이 기본 디렉토리 내의 하위 디렉토리를 통해 그것을 복사할 것입니다.

답변1

find . -mindepth 1 -type d -exec echo cp index.php {} \;

위 명령은 index.php파일을 현재 디렉터리에서 모든 하위 디렉터리로 재귀적으로 복사하지만 즉시 복사하지는 않습니다.

올바른 복사 명령이 모두 인쇄되었는지 확인했으면 를 제거 echo하고 실행하십시오. echo실제로 원하지 않는 작업을 수행하기 전에 전체 명령이 수행하는 작업을 보여주기 위한 안전 장치일 뿐입니다.

@RedGrittyBrick에게 감사하는 또 다른 흥미로운 접근 방식은 다음과 같습니다.심볼릭 링크그냥 복사하는 대신에 파일을 복사하세요. 이렇게 하면 index.php하위 디렉터리의 파일은 모두 루트 디렉터리에 있는 파일에 대한 바로 가기가 되며 중복되지 않습니다. 이렇게 하려면 위 명령에서 cp로 변경합니다 ln -s. 이렇게 하면 "마스터" 파일을 변경할 때 index.php하위 디렉터리의 다른 모든 파일이 여전히 해당 파일을 가리키므로 볼 때 자동으로 변경됩니다.


완전성을 위해 전체 명령을 세분화하면 다음과 같이 작동합니다.

  • find ., 현재 디렉토리에서 검색
  • -mindepth 1, 적어도 하나의 디렉토리 깊이로 이동
  • -type d, 디렉토리만 검색
  • -exec …, 명령을 실행합니다 echo cp index.php {}. 여기서 은 {}발견된 모든 디렉터리로 대체됩니다. 이 명령은 각 하위 디렉터리에 대해 한 번씩 여러 번 호출됩니다.

관련 정보