
저는 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 {}
. 여기서 은{}
발견된 모든 디렉터리로 대체됩니다. 이 명령은 각 하위 디렉터리에 대해 한 번씩 여러 번 호출됩니다.