私はアプリケーションを圧縮しようとしていますが、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つのステップでアーカイブを作成することです。
除外するすべての項目を除外するアーカイブを作成します。
zip -r application.zip . -x 'vendor/*' 'node_modules/*' '.git/*' .env 'public/assets/images/*'
除外されたディレクトリに含めるフォルダを1つ同じアーカイブに追加します。
zip -r application.zip public/assets/images/icons/
(デフォルトの動作は、zip
ファイルがすでに存在する場合は既存のアーカイブに追加することです。)