GNU-параллельное шифрование файлов с пробелами или специальными символами?

439
Weekender

Я пытаюсь зашифровать кучу файлов с помощью кода ниже:

find . -name "*.vi" | sort | parallel --gnu -j 4 --workdir "$PWD" ' echo "Encrypting {/.} ..." gpg -r user@myemail.com -o "/tank/test/{/.}.gpg" -e "{}" '; 

Это прекрасно работает, но только если в именах файлов нет пробелов и специальных символов (! Или '). Кроме переименования всех файлов, есть ли способ заставить этот код работать?

2

1 ответ на вопрос

2
Ole Tange

Похоже, слишком много цитат. Помните, что GNU Parallel предполагает, что {} анализируется непосредственно оболочкой. Попробуйте удалить "" вокруг {} и {/.}:

# Avoid typing --gnu ever again echo '--gnu' >> ~/.parallel/config  find . -name "*.vi" | sort | parallel echo Encrypting {/.} ...";" gpg -r user@myemail.com -o /tank/test/{/.}.gpg -e {} 
Работает! Получившиеся имена файлов заменяются пробелами на «\», но это не проблема, после этого я могу просто запустить команду переименования. Спасибо чувак! Weekender 9 лет назад 0
Тогда вы не удалили достаточно ". Удалите больше. Помните, что {} и {/.} Не должны * никогда * быть внутри" или ". Ole Tange 9 лет назад 0

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