あるパスから別のパスにファイルをコピーする(.zipファイルを除く)

あるパスから別のパスにファイルをコピーする(.zipファイルを除く)

同じサーバー内の1つのUNIXパスから別のUNIXパスにすべてのファイルをコピーする必要があります。しかし、コピーするときにいくつかの.zipファイルを除外したいと思います。どうやって使うの?CPコマンドオプション?

答え1

cp/globbingのみを使用し、/execを使用してfindこれを実行できるかどうかはわかりません。

find /first/path/ -type f -not -name '*.zip' -exec cp {} /second/path/ \;

再帰を防ぐには、maxdepth次のオプションを追加できます。

find /first/path/ -maxdepth 1 -type f -not -name '*.zip' -exec cp {} /second/path/ \;

または、ソースからターゲットにすべてをコピーし、すべての.zipファイルを確認して削除することもできます。

cp -R /first/path/ /second/path/ && find /second/path -type f -name '*.zip' -exec rm {} \;

答え2

簡単な解決策は、.zipファイルを別の場所に移動することです。目次そしてMV、残りを次のようにコピーします。CPその後、mvを使用して.zipファイルを元の場所に復元します。目次

cd SOURCE && mkdir ~/dELETEmE && mv *.zip ~/dELETEmE && cp * DESTINATION  
cd ~/dELETEmE && mv * SOURCE && cd .. && rmdir dELETEmE  

答え3

using onlyが必要かどうかはわかりませんが、cpbashを使用してファイル名にスペースが含まれていないことを確認した場合は、次のようになりますか?

ソースパスへ

cp $(ls | grep -v *.zip) /destination/path

関連情報