7zip e Mover arquivos com espaços no script Bash [duplicado]

0

Estou tentando fazer o 7zip e mover alguns arquivos semelhantes a este:

./[1998] - This year's book.pdf ## observe os colchetes, espaços e apóstrofos

Meu script é assim:

for file in 'ls ./unprocessed/*.pdf'; 
do 
    7z a -mx=0 -pMyPassword $file.7z $file ;
    mv $file ./processed 
done

(Isso é realmente no linux da Synology, se faz diferença.)

Eu tentei adicionar aspas ao redor de "$ file", mas isso não ajuda em nenhuma das duas linhas principais.

Espero que eu possa fazer isso sem muitas coisas complicadas do tipo grep ou sed.

O principal erro que estou recebendo é que ele está tentando dividir os nomes dos arquivos devido aos espaços, e enlouquece porque não consegue encontrar "[1998]", etc.

Eu acho que o 7z vai ficar bem com isso, uma vez que eu trabalhe na edição de espaços / chars funky (?).

Alguém mais se deparou com isso?

Aprecie qualquer conselho!

    
por Mark 04.07.2016 / 23:45

1 resposta

1

Graças à dica para visitar o shellcheck.net, com o qual eu não estava familiarizado, o problema principal era esta linha:

'ls ./unprocessed/*.pdf'

Isso é melhor:

for file in ./unprocessed/*.pdf

Em seguida, adicionando as aspas em torno de "$ file" funcionou.

    
por 05.07.2016 / 00:46