На основе моего опыта,"-bash: echo: write error: No such device
"обычно средство там не является никакой поддержкой ядра данного устройства. Таким образом, необходимо попытаться реконфигурировать и восстановить ядро. Если можно найти какое-либо другое рабочее ядро (например, от SLES), его конфигурация будет лучшей начальной точкой.
Проблемой не является точка с запятой, Ваш второй пример заботился бы об этом. Проблема состоит в том, что утилиты Linux/Unix (и, следовательно, Cygwin) не берут ту инструкцию означать, "перемещают все файлы, заканчивающиеся в .XLS;1
кому: .XLS
," поскольку я понимаю, что Windows делает. Необходимо переместить каждый файл индивидуально:
for file in *.XLS\;1; do
mv "$file" "${file%;1}"
done
Объяснение:
Это принимает все окончание файлов .XLS;1
и хранит их по одному в названную переменную $file
. Для каждого файла мы говорим этому перемещать это $file
к новому имени мы создаем путем прерывания ;1
от задней части $file
.
N.b. Для тех, которые используют zsh, существует хорошая названная утилита zmv
:
zmv '(*).XLS;1" "$1.XLS"
В зависимости от Вашей установки Вы, возможно, должны работать autoload zmv
сначала (помещает его в Ваш .zshrc также).
Можно переместиться inode.
Найти inode
ls -i
с помощью inode Вы просто нашли
find . -inum <you just found> -exec mv {} <new name> \;
Это должно работать над системой Unix. Никакая идея о cygwin.
Cygwin имеет пакет util-linux, который содержит rename
:
rename ".XLS;1" ".XLS" *.XLS\;1
Или при отсутствии других точек с запятой в именах файлов, это достаточно:
rename ";1" "" *.XLS\;1