Crie links suaves de arquivos dentro de subpastas que contenham espaços?

0

Eu tenho uma pasta que tem várias pastas com ISOs em cada. Alguns nomes dos arquivos e pastas possuem espaços. Aqui está um exemplo de estrutura de pastas:

/ISOs
-CentOS
--Centos6
---Centos6_x64.iso
---Centos6_x86.iso
-Windows_10_Pro
--Windows_10_Pro.iso
-Windows 10 Enterprise
--Windows 10 Enterprise.iso

Comandos tentados:

find /mnt/fs1/Shares/Software$/ISOs/ -name \*.iso | xargs ln -sf /mnt/fs2/Shares/Images$/proxmox/template/iso

e

for file in "$(find /mnt/fs1/Shares/Software$/ISOs/ -name \*.iso)"; do ln -sf /mnt/fs2/Shares/Images$/server/template/iso/$file;

Com o uso dos comandos acima, ele criará links para os arquivos, mas deixará de fora qualquer coisa que tenha um espaço no nome da pasta / subpasta ou no nome do arquivo:

/iso
-Centos6_x64.iso
-Centos6_x86.iso
-Windows_10_Pro.iso

Qual é a melhor maneira de listar todos os arquivos contidos nesta pasta?

    
por sectorjunkie 23.02.2016 / 22:18

1 resposta

0

Quando há espaços em strings, o shell está interpretando estes como comandos separados. Você precisa encapsular o caminho entre aspas, então o shell sabe que é uma única unidade.

for file in "$(find /mnt/fs1/Shares/Software$/ISOs/ -name \*.iso)"; do ln -sf "/mnt/fs2/Shares/Images$/server/template/iso/$file;"

Eu tentei um comando semelhante no meu sistema, e uma maneira mais fácil de fazer isso seria

find /mnt/fs1/Shares/Software$/ISOs/ -name "*.iso" -exec ln -sf {} \;
    
por 23.02.2016 / 23:51