正規表現およびzipコマンドを使用したディレクトリの除外

正規表現およびzipコマンドを使用したディレクトリの除外

私はアプリケーションを圧縮しようとしていますが、1つ以外のすべての画像ディレクトリを除外したいと思います。

次のフォルダ構造を考えてみましょう。

/images
└───/foo // exclude
└───/bar // exclude
└───/foobar // exclude
└───/icons // include

私が理解したところ、このzipコマンドは引数に正規表現を許可しないので、どうすればいいのかわかりません。

私はいくつかの調査を行った結果、これを行う方法があると信じています。ls/findしかし、方法は完全にはわかりません。誰でも私に何をすべきかを提案できますか?

これは私の現在のコマンドです(除外みんなイメージディレクトリ):

zip -rq application.zip . -x vendor/\* node_modules/\* .git/\* .env public/assets/images/\*

私はこのようなものが必要だと思います(まだ実際に動作する正規表現を取得できませんでした)。

find ./public/assets/images -maxdepth 1 -regex '\.\/(?!icons).* | zip -rq application.zip . -x vendor/\* node_modules/\* .git/\* .env INSERT_FIND_RESULTS_HERE

修正する

完全なアプリケーションディレクトリは次のようになります。

/www
│   .env
│   .env.example
│   .env.pipelines
│   .gitignore
│   artisan
│   etc...
└───/.ebextensions
└───/.git
└───/app
└───/bootstrap
└───/config
└───/database
└───/infrastructure
└───/node_modules
└───/public
│   │   .htaccess
│   │   index.php
│   │   etc...
│   │
│   └───/assets
│   │   └───/fonts
│   │   └───/images
│   │   │   └───/blog
│   │   │   └───/brand
│   │   │   └───/capabilities
│   │   │   └───/common
│   │   │   └───/contact
│   │   │   └───/icons
│   │   │   └───/misc
│   │   │   └───etc...
│   │
│   └───/js
│   └───/css
└───/storage
└───/tests
└───/vendor

以下を除くすべてのファイルを圧縮したいと思います。

vendor/
node_modules/
.git/
.env
public/assets/images/ (excluding public/assets/images/icons)

アップデート2

find公開した後、正規表現はプレビューを許可しないため、grep検索と検索を組み合わせて使用​​する必要があることに気づきました。だからここに私の最新のコマンドがあります(それでもまだ動作しません)。

find ./public/assets/images -maxdepth 1 -regex '\./public/assets/images/.*' | grep -oP '\./public/assets/images/(?!icons).*' | xargs zip -rq application.zip . -x vendor/\* node_modules/\* .git/\* .env

ちなみに私はそれをどのように使用するのかわかりませんxargs。これが上記の方法が期待どおりに機能しない理由だと思います。

ベストアンサー1

私の提案は、2つのステップでアーカイブを作成することです。

  1. 除外するすべての項目を除外するアーカイブを作成します。

    zip -r application.zip . -x 'vendor/*' 'node_modules/*' '.git/*' .env 'public/assets/images/*'
    
  2. 除外されたディレクトリに含めるフォルダを1つ同じアーカイブに追加します。

    zip -r application.zip public/assets/images/icons/
    

(デフォルトの動作は、zipファイルがすでに存在する場合は既存のアーカイブに追加することです。)

おすすめ記事