У меня была аналогичная проблема, и я решил ее, переименовав файл /var/log/btmp и создав новый пустой файл /var/log/btmp.
Проблема появляется после нерегулярной перезагрузки. - Putty исчезает после успешного входа в систему - Закрытое соединение WinSCP "Сервер отправил статус выхода команды 254" - Вход из sercon показывает "Последний вход... У вас есть почта. Отказано в доступе"
Перезагрузка в режиме восстановления позволила мне получить доступ к ssh-логам sshd[24017]: ошибка: PAM: pam_open_session(): В доступе отказано
Проблема решена с помощью нового пустого файла /var/log/btmp
Сzsh
:
autoload zmv # best in ~/.zshrc
zmv '(**/)(* *)' '$1${2// /_}'
Как и в вашем коде, он не переименовывает скрытые файлы. Он также не заглядывает в скрытые каталоги. Если вы хотите переименовать их, измените его на:
autoload zmv # best in ~/.zshrc
zmv '(**/)(* *)(#qD)' '$1${2// /_}'
bash
эквивалентно (, но без гарантий, обеспечиваемых zmv
, поэтому вы можете добавить опцию -i
кmv
)последней из них будет:
LC_ALL=C find. -depth -name '* *' -exec bash -c '
for file do
base=${file##*/}
mv -i -- "$file" "${file%/*}${base// /_}"
done' bash {} +
Нет простого эквивалента первому, так как нельзя комбинировать -prune
(, что было бы необходимо, чтобы не спускаться в скрытые каталоги )и -depth
. Однако функционально эквивалентный вариант может быть записан как:
LC_ALL=C find. -depth -name '* *' ! -path '*/.*' -exec bash -c '
for file do
base=${file##*/}
mv -i -- "$file" "${file%/*}${base// /_}"
done' bash {} +
Он спускался в скрытые каталоги, но не переименовывал там файлы.