Назад | Перейти на главную страницу

Обработка имен файлов с пробелами в сценарии оболочки

Как обрабатывать файлы, имена которых содержат пробелы, в сценарии оболочки.

Вот что я пытаюсь

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

Но когда я это делаю, имя файла удаляется после пробела. Например, если имя файла BY567_Test file.csv, оно будет изменено на BY567_Test-datetimestamp, а не на BY567_Test file.csv-datetimestamp.

Заключите в двойные кавычки конец строки и базовое имя:

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

Переменные будут интерпретированы, и пробелы должны быть в порядке.