У меня куча файлов с моей преподавательской работы, которые я хочу поместить в OneDrive для регулярного резервного копирования. Мои коллеги плохо с именами файлов, поэтому им нужна очистка, чтобы OneDrive их принял.
Единственное, чего я не могу понять, так это как выбрать пробел перед точкой.
Я пробую это
bash-3.2$ echo "foo bar .pdf" | tr -s " \." '\.'
и получая это
foo.bar.pdf
вместо foo bar.pdf
. Что не так с моей командой?
решение1
tr
заменяетодинокийсимволы на отдельные символы, и вы сказали ему заменить каждый пробел и каждую точку на точку (за исключением -s
сжатия пробела+точки в одну сущность для замены). Другими словами, одного пробела-или-точки достаточно, чтобы запустить ваш tr
.
Для замены строк используйте sed
:
echo "foo bar .pdf" | sed 's/ \././g'
Примечание: я использовал , g
поскольку tr
вы использовали глобально, поэтому я предположил, что это то, что вам нужно в общем случае (это не имеет значения для этой конкретной строки foo bar .pdf
).