У меня есть список файлов, которые я пытаюсь скопировать и переместить (используя cp и mv) в сценарии оболочки bash. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу заставить ни одну команду распознавать огромное количество файлов, по-видимому, потому что имена файлов содержат пробелы и / или символы Юникода. Я не смог найти никаких переключателей для декодирования / перекодирования этих символов. Вместо этого, например, если я копирую «file name.xml», я получаю «* .xml» и ошибку сценария, что файл не найден для моего результата. Кто-нибудь знает настройки или команды, которые будут работать с этими файлами?
РЕДАКТИРОВАТЬ (добавить текущий код):
Когда я бегу:
MacBookPro: рабочий стол $ ./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] исходный_файл целевой_файл
ср [-R [-H | -L | -P]] [-fi | -n] [-pvX] исходный_файл ... целевой_каталог
... когда он попадает в команду "cp". На самом деле в скрипте есть что-то еще, что обрабатывает скопированные файлы дальше. С "обычным" именем файла, например 'file.xml', все работает отлично. Это только файлы с пробелами или символами Unicode, где у меня проблемы.