ファイルを見つけて移動し、同時に名前を変更しますか?

ファイルを見つけて移動し、同時に名前を変更しますか?

現在、私はいくつかの静的資産にステップ3を使用し、gzipS3s3cmdバケット(技術的にはDigital Ocean Spacesバケット)を使用しています。これが私がしたことです:

  1. $ find . -type f -name '*.css' | xargs -I{} gzip -k -9 {}
  2. $ find . -type f -name '*.css.gz' | xargs -I{} s3cmd put --acl-public --add-header='Content-Encoding: gzip' {} s3://mybucket/assets/{}
  3. ただし、拡張機能を削除するには、バケット内のすべての拡張機能を手動で変更する必要があります.gz

手順3を手動で実行する必要がない方法はありますか?手順2で.gzターゲットから拡張機能を削除できるかどうかを知りたいです。しかし、元のファイルを私のサーバーに保存したいので、これは大きな問題です。

ベストアンサー1

ファイル名に対してシェル文字列操作を実行できるように、-execin操作を使用できます。findパラメータ拡張を"${var%.*}"使用して拡張を削除できます。以下は例です。

find . -type f -name '*.css.gz' -exec bash -c 's3cmd put --acl-public --add-header="Content-Encoding: gzip" "$1" "s3://mybucket/assets/${1%.*}"' -- {} \;

おすすめ記事