Manipulando nomes de arquivos com espaços no shell script

2

Como lidar com arquivos com seus nomes contendo espaços em um script de shell.

Aqui está o que estou tentando

    find /abc/xyz -name 'BY567*.csv' | while read fname
    do
        mv "$fname" ./archive/$(basename $fname)-$(date +%Y%m%d-%T)
    done

Mas quando faço isso, retira o nome do arquivo depois do espaço. Como se o nome do arquivo fosse BY567_Test file.csv, ele será alterado para BY567_Test-datetimestamp e não para o arquivo BY567_Test.csv-datetimestamp.

    
por yogsma 25.10.2010 / 17:52

1 resposta

5

Coloque aspas duplas no final da linha e no nome de base:

mv "$fname" "./archive/$(basename "$fname")-$(date +%Y%m%d-%T)"

As variáveis serão interpretadas e os espaços devem estar corretos.

    
por 25.10.2010 / 17:55

Tags