В общем, есть куча файлов в дереве каталогов в которых нужно в имени заменить определённую часть, что-то простого пути сделать не нашел, а вот такое вот смострячил:
find ./usr -name "*2.3*" -print | xargs -L 1 -I '{}' echo mv '{}' <br/>$<br/>(echo '{}' <br/>| sed <br/>'s<br/>|2.3<br/>|2.4<br/>|<br/>'<br/>) | bash -s
Собственно во всех файлах 2.3 нужно было заменить на 2.4. Что команда делает:
- Для начала:
find ./usr -name "*2.3*" -print
выводит на экран все файлы в имени которых есть 2.3 - xargs формирует ввод для команды, в нашем случае echo. ‘-L 1’ - одна строчка ввода, один параметр, ‘-I ‘{}’’ - делает подмену на то что на вводе, далее ‘{}’ можно применять как макрос
- напечатанная команда вводить на stdin баша, где и выполняется.
Ужас, проще как??? :laughing:
UPD:
Мда, в общем сам себе и отвечаю:
find ./usr -name "*2.3*" -print | xargs rename 2.3 2.4