Как отправить `–files-from` со специальным символом перевода строки в rsync?

По какой-то странной причине есть каталоги людей с символами новой строки, которые можно воспроизвести примерно так:

mkdir normal mv normal why$'\n'would$'\t'you$'\r'dothis 

и я отвечаю за rsyncing файлы и папки, содержащие эти странные символы.

В настоящее время я выполняю распараллеливание своего rsync, поэтому мне нужно найти корневой каталог и разбить работу на управляемые куски. В корневом каталоге нет этих сумасшедших персонажей. Запуск rsync --dry-run дает мне файлы, которые я могу распараллелить, но, например, символ \n становится \#012 , что, я подозреваю, является восьмеричным.

Однако, когда он экранирован таким образом, я больше не могу отправить rsync -a --files-from=files.txt где files.txt содержит этот экранированный \#012 потому что rsync не может найти эту папку.

Что мне делать в этой ситуации? Есть ли какой-то дополнительный шаг выхода, который я пропускаю, который может позволить rsync подцепить это? Я не могу написать \n потому что тогда файл:

 somedumb\nthing 

становится

 somedumb thing 

Вы должны использовать аргумент --from0 , который позволяет отправителю разделять имена файлов с помощью \0 .

 cd /source/path1 && find . -print0 | rsync -av --files-from=- --from0 . remote:/target/ 

или же

 find /source/path1/./ -print0 | rsync -av --files-from=- --from0 / remote:/target/