У меня есть каталог со многими файлами, имеющими специальные символы и пробелы. Я хочу выполнить операцию со всеми этими файлами, поэтому я пытаюсь сохранить все имена файлов в list.txt
и затем выполнить команду с этим списком.
Специальные символы в моем списке & []'
.
Поэтому я хочу использовать sed
для замены каждого вхождения на \
+ соответствующий символ.
Например: filename .txt
=> filename\ .txt
и т. Д.
Дело в том, что у меня проблемы с обработкой апострофов.
Вот моя команда на данный момент:
ls | sed 's/\ /\\ /g' | sed 's/\&/\\&/g' | sed "s/\'/\\'/g" | sed 's/\[/\\[/g' | sed 's/\]/\\]/g'
Сначала у меня были проблемы с, я полагаю, апострофами вСтроковая команда находится в конфликте с апострофами, окружающими строку. Поэтому вместо этого я использовал двойные кавычки, но они все равно не работают.
Я пробовал все это, но ничего не получалось:
sed "s/\'/\\'/g"
(без апострофа) * 1025 *
sed "s/'/\'/g"
(без экранирования)
sed "s/'/\\'/g"
(без обратной косой черты)
sed 's/"'"/\"'"/g'
(двойные кавычки в одинарных кавычках)
В качестве отказа от ответственности, я должен сказать,Я совершенно новичок в sed
. Я только что выполнил свою первую команду sed
сегодня, поэтому, возможно, я делаю что-то не так, я не понял.
PS: Я видел эту ветку, но у меня не получилось ответить:
https://unix.stackexchange.com/questions/157076/how-to-remove-the-apostrophe-and-delete-the-space
Как заменить апострофом внутри файла с помощью SED