Hatred's Log Place

DON'T PANIC!

Apr 21, 2008 - 1 minute read - linux

Я или критин или...

В общем, есть куча файлов в дереве каталогов в которых нужно в имени заменить определённую часть, что-то простого пути сделать не нашел, а вот такое вот смострячил:

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. Что команда делает:

  1. Для начала: find ./usr -name "*2.3*" -print выводит на экран все файлы в имени которых есть 2.3
  2. xargs формирует ввод для команды, в нашем случае echo. ‘-L 1’ - одна строчка ввода, один параметр, ‘-I ‘{}’’ - делает подмену на то что на вводе, далее ‘{}’ можно применять как макрос
  3. напечатанная команда вводить на stdin баша, где и выполняется.

Ужас, проще как??? :laughing:

UPD:

Мда, в общем сам себе и отвечаю:

find ./usr -name "*2.3*" -print | xargs rename 2.3 2.4

Tags: linux

3D-хроника DigiKam Picasaweb и kipi-plugins

comments powered by Disqus