Как насчет этого:
perl -e '
@files = grep {-f} glob "*";
@old_files = @files;
map {
s!(.*)\.!$1/!;
s!\.!_!g;
s!/!.!
} @files;
rename $old_files[$_] => $files[$_] for (0..$#files)
'
Отказ от ответственности: попробуйте его на фиктивном каталоге сначала, я не протестировал его!
Когда Вы работаете bash --login
, это запускает оболочку входа в систему. Одна из причуд удара относительно файлов инициализации - то, что, если это - оболочка входа в систему, это только читает ~/.bash_profile
(или если это не существует ~/.bash_login
, или если это не существует также ~/.profile
), нет ~/.bashrc
даже если оболочка является интерактивной.
Для выполнения кода в оболочке входа в систему вставьте его ~/.bash_profile
если это характерно для удара, или в ~/.profile
если Вы хотите, чтобы это произошло на ком-либо, входят в систему, даже когда /bin/sh
вызывается.
Чтобы удостовериться, что Ваши настройки для интерактивных оболочек применяются, вставляет следующий код Ваш ~/.bash_profile
:
case $- in
*i*) if [ -e ~/.bashrc ]; then . ~/.bashrc; fi;;
esac
if [ -e ~/.profile ]; then . ~/.profile; fi
Как улучшение ответа @Gilles для получения рубиновым, чтобы только работать, когда Вы просите его я отредактировал бы копию Вашего .bashrc файла и сказал бы удару использовать его с - rcfile параметр