У меня есть куча файлов следующим образом:
04602635_b0294.DAT20120807164534
04602637_b0297.DAT20120807164713
04602638_b0296.DAT20120807164637
04602639_b0299.DAT20120807164819
04602640_b0298.DAT20120807164748
04602641_b0300.DAT20120807164849
04602650_b0301.DAT20120807164921
04602652_b0302.DAT20120807164956
Мне нужно переименовать их, чтобы исключить префикс. Это должно выглядеть так ..
b0294.DAT20120807164534
b0297.DAT20120807164713
b0296.DAT20120807164637
b0299.DAT20120807164819
b0298.DAT20120807164748
b0300.DAT20120807164849
b0301.DAT20120807164921
b0302.DAT20120807164956
РЕДАКТИРОВАТЬ
Я забыл добавить, что я использую Solaris.
"${file#*_}"
?echo
, просто перенаправьте вывод скрипта вbash
.Вы можете использовать инструмент
rename
для этого:Если вы добавите
-n
его, он не будет ничего переименовывать, а просто покажет вам, что было бы сделано без-n
.В ответ на комментарий rush: my
rename
is на самом деле является ссылкой на пакетprename
Debian и Ubuntuperl
.источник
rename
не всегда одинаково в разных системах, и иногда его синтаксис может отличаться.perl-rename
совсем не относится к Debian. Это просто не называется,rename
ноperl-rename
илиprename
в других дистрибутивах. Он всегда должен быть в репозиториях, и один также устанавливается с Perl .rename
и , вероятно, будет установлено без явного запроса пакета , который не называется простоrename
, специфична для Debian. Другие дистрибутивы Linux вызывают командуprename
или,perl-rename
чтобы избежать путаницы с util-linux,rename
и не связывают ее с пакетом perl, и я не знаю ни одного не-Linux Unix, который поставляет его под именемrename
или отправляет в установка по умолчанию под любым именем.