Meu problema é bem direto, e acho que estou perto, mas preciso de um impulso na direção certa.
Eu tenho uma tabela MySQL que contém muitos nomes de arquivos que são usados por um site. Todos esses arquivos existem em um diretório images
. O que eu estou tentando alcançar é ser capaz de SELECT
alguns desses nomes de arquivos com base em várias condições e, em seguida, ter esses arquivos e apenas os arquivos adicionados a um arquivo .zip.
Percebi imediatamente que estava tendo problemas com nomes de arquivos que continham espaços. Então, modifiquei minha consulta SQL para que os nomes dos arquivos fossem citados. Então, o que eu acabei fazendo foi:
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)
Isto produz uma lista de todos os nomes de arquivos que estou procurando no banco de dados (juntamente com entradas vazias para os valores nulos), no entanto, o resultado para cada linha é zip warning: name not matched: "filename.jpg"
.
Alguém pode me ajudar com isso?
UPDATE
Eu acredito que o problema é algo com o nome do arquivo escapar. Eu escapei das aspas duplas na consulta, de modo que os CONCATs se tornaram CONCAT('\"', ifnull(products_image, ''), '\"'),....
, mas ainda têm o mesmo resultado.