Как я могу скопировать файлы с именами, содержащими пробелы и UNICODE при использовании сценария оболочки?

У меня есть список файлов, которые я пытаюсь скопировать и переместить (использование CP и mv) в сценарии оболочки удара. Проблема, с которой я сталкиваюсь, состоит в том, что я не могу заставить ни одну команду распознавать огромное количество файлов, по-видимому потому что имена файлов содержат пробелы и/или unicode символы. Я не мог найти переключатели к decode/re-encode этими символами. Вместо этого например, если я копирую "файл name.xml", я получаю "*.xml" и ошибку сценария, которой файл не был найден для моего результата. Кто-либо знает настройки или команды, которые будут иметь дело с этими файлами?

РЕДАКТИРОВАНИЕ (добавляющий текущий код): Когда я работаю:

MacBookPro:Desktop$./script.sh

#!/bin/sh
dateVar=`date +%Y-%m-%d`
mkdir /Volumes/Documents/SMSarchive/$dateVar
cd /Volumes/Documents/SMSarchive/SMSdrop
for i in *.xml
do
cp $i /Volumes/Documents/SMSarchive/$dateVar/$dateVar-$i
done

Я получаю сообщение:

использование: CP [-R [-H |-L |-P]] [-fi |-n] [-pvX] source_file target_file cp [-R [-H |-L |-P]] [-fi |-n] [-pvX] source_file... target_directory

... когда это поражает команду "CP". Существует на самом деле больше к сценарию, который обрабатывает скопированные файлы далее. С "регулярным" именем файла, например, 'file.xml', все хорошо работает. Это - только файлы с пробелами или символы Unicode, где у меня есть проблемы.

5
задан LOlliffe 31 March 2010 в 06:19
поделиться

2 ответа

Проблемы с пробелами указывают на недостаточное цитирование. Следующее неверно:

someprogram $file

Правильная версия выглядит следующим образом:

someprogram "$file"
18
ответ дан 18 December 2019 в 08:27
поделиться

следите за ошибками кода, когда $ i имеет значение null! Это может быть результатом фатальных ошибок rm -Rf!

1
ответ дан 18 December 2019 в 08:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: