/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 を使用してまずターゲットディレクトリを作成し、ファイルをコピーします。最初の2行~/.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