Я пытаюсь вытащить список файлов через ssh с помощью rsync, но я не могу заставить его работать с именами файлов, на которых есть пробелы! Один пример файла:Shell: rsync неправильно обрабатывает пробелы в имени файла/пути
/home/pi/Transmission_Downloads/FUNDAMENTOS_JAVA_E_ORIENTAÇÃO_A_OBJETOS/2. Fundamentos da linguagem/estruturas-de-controle-if-else-if-e-else-v1.mp4
и я пытаюсь передать его, используя этот код оболочки.
cat $file_name | while read LINE
do
echo $LINE
rsync -aP "[email protected]$server:$LINE" $local_folder
done
и ошибка, я получаю это:
receiving incremental file list
rsync: link_stat "/home/pi/Transmission_Downloads/FUNDAMENTOS_JAVA_E_ORIENTAÇÃO_A_OBJETOS/2." failed: No such file or directory (2)
rsync: link_stat "/home/pi/Fundamentos" failed: No such file or directory (2)
rsync: link_stat "/home/pi/da" failed: No such file or directory (2)
rsync: change_dir "/home/pi//linguagem" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1655) [Receiver=3.1.0]
Я не понимаю, почему это печать OK на экране, но разбирает имя файла/путь неправильно! Я знаю, что пробелы на самом деле являются обратными слэшами с пробелами, но не знают, как это решить. Sed (найти/заменить) не помогло, и я также попробовал этот код без успеха
while IFS='' read -r line || [[ -n "$line" ]]; do
echo "Text read from file: $line"
rsync -aP "[email protected]$server:$line" $local_folder
done < $file_name
Что я должен сделать, чтобы исправить это, и почему это происходит?
Я прочитал список файлов из TXT-файла (каждый файл и путь в одной строке), и я использую ubuntu 14.04. Благодаря!
Я наткнулся на файлы с апострофами. В любом случае, я могу обойти это? –
@ Vini.g.fer: см. Мое редактирование. –