私の問題はかなりまっすぐ進むものです、そして私は近いと思いますが正しい方向への後押しが必要です。
私はウェブサイトで使用されている多くのファイル名を含むMySQLテーブルを持っています。これらのファイルはすべてディレクトリに存在します。 images
。私が達成しようとしているのは、できることです。 SELECT
これらのファイル名の一部はさまざまな条件に基づいて作成されており、それらのファイルがあり、それらのファイルのみが.zipファイルに追加されています。
スペースを含むファイル名に問題があることにすぐ気付きました。そのため、ファイル名が引用符で囲まれるようにSQLクエリを変更しました。それで、私がやめたのは、
zip sample-images $(mysql -u username -pPassword -e "SELECT CONCAT('"', ifnull(products_image, ''), '"'), CONCAT('"', ifnull(products_image_2, ''), '"').... WHERE condition=true" db_name --silent --raw)
これは私がデータベースで探しているすべてのファイル名のリストを(null値の空のエントリと共に)出力しますが、すべての行の結果は次のようになります。 zip warning: name not matched: "filename.jpg"
。
誰かがこれを手伝ってくれる?
更新 私は問題がファイル名のエスケープと何かであると信じています。 CONCATが次のようになるように、クエリ内の二重引用符をエスケープしました。 CONCAT('\"', ifnull(products_image, ''), '\"'),....
それでも同じ結果が得られます。