/tmp/backup에 내 사이트의 백업 복사본이 있고 이를 /home/mysite/public_html에 복사하고 싶지만 내 목표는 .php 파일(중첩 폴더 포함)만 복사하고 바꾸는 것입니다.
중첩된 폴더가 없으면 이렇게 하면 됩니다.cp /tmp/backup/*.php /home/mysite/public_html
하지만 폴더가 많은 전체 웹사이트에 대해 어떻게 이 작업을 수행할 수 있습니까?
답변1
cd /tmp/backup
find . -name '*.php' | cpio -pmud /home/mysite/public_html
답변2
최신 버전의 bash에서는 globstar( shopt -s globstar
)를 활성화한 후 다음을 수행할 수 있습니다.
cd /tmp/backup
tar cvf - **/*.php | tar xvf - -C /home/mysite/public_html
** 모든 파일, 디렉터리 및 하위 디렉터리와 일치합니다.
tar
디렉토리 구조를 유지하기 때문에 여기서 사용하고 있습니다 .
답변3
POSIX 도구를 통해 다음을 사용하십시오.공원(POSIX는 다음으로 대체되었습니다.아스팔트그리고CPIO):
cd /tmp/backup
find . -name '*.php' | pax -rw -pp /home/mysite/public_html
zsh를 사용하여 먼저 대상 디렉터리를 만든 다음 파일을 복사합니다. 처음 두 줄을 ~/.zshrc
.
autoload zmv
alias zcp='zmv -C' zln='zmv -L'
cd /tmp/backup
mkdir -p **/*.php(e\''REPLY=/home/mysite/public_html/${REPLY:h}'\')
zcp '(**/)(*.php)' '/home/mysite/public_html/$1$2'
zcp
(여기서 zsh는 필요에 따라 대상 디렉터리를 생성할 방법이 없기 때문에 표준 접근 방식에 비해 이점이 없습니다 .)
답변4
find /tmp/backup/ -name "*.php" | xargs -I % cp % /home/mysite/public_html