특정 확장자를 포함하여 전체 폴더 복사/이동

특정 확장자를 포함하여 전체 폴더 복사/이동

/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

관련 정보