Вы пытались использовать ssh -Y для подключения? Похоже, что переадресация X11 по-прежнему не происходит, и вы пытаетесь запускать удаленные программы X локально, а не удаленно, используя локальный дисплей.
Вы можете сопоставить все имена файлов со знаком вопроса с помощью *\?*
и удалить часть после ?
из переменной с помощью ${var%%\?*}
. Сам вопросительный знак является подстановочным знаком, поэтому его необходимо экранировать в обоих случаях.
Простой цикл по файлам и запуск mv
должен сделать:
for f in./*\?*; do
echo mv -n "$f" "${f%%\?*}"
done
(Здесь есть echo
, чтобы вы могли видеть, что будет сделано, прежде чем будут внесены какие-либо изменения. Удалите его, если вывод выглядит разумным.)
Использование утилиты Perl rename
:
$ rename -v -n 's/[?].*//' *[?]*
rename(file1.doc?b1h2uj3b123uiyb12, file1.doc)
rename(file2.xls?oi12jo3ij123oij, file2.xls)
rename(file3.jpg?0990xcizx0cxzczixuchbiasdu, file3.jpg)
Это применяет замену Perl s/[?].*//
к каждому имени. Это усекло бы имя непосредственно перед первым вопросительным знаком. Шаблон подстановки имени файла *[?]*
расширится до любого имени в текущем каталоге, которое содержит вопросительный знак.
Запустите команду без -n
, чтобы фактически переименовать файлы.