Я запускаю Linux, и у меня есть некоторое основное консольное знание, но моя текущая проблема является довольно трудной, и я не знаю, как достигнуть этого.
Я хочу/нуждаюсь переименовать все в папке, которая соответствует данной строке. Всем я имею в виду
В основном я хочу осуществить рефакторинг проект Java. Несомненно, я мог использовать Eclipse для обработки замены, но это не учитывает папки или ресурсы за пределами моей рабочей области.
Я думал о сценарии, который мог сделать задание для меня, но это кажется довольно хитрым. Например, когда дело доходит до folder-/file-rename я хочу заменить только часть имени, которое соответствует моей строке, остальные должны остаться нетронутыми.
Возможно, у кого-то уже есть что-то вроде этого в его наборе сценария :-)
Заранее спасибо
Marc
Необходимо будет сделать это в несколько этапов
find mydir -type f -print | xargs egrep <searchstring>
)| while read fn; do sed 's/searchstring/replacement/g' $fn >/tmp/foo && mv /tmp/foo $fn; done
) find mydir -type d -print | egrep <searchstring>
) | while read olddir; do newdir=echo $olddir | sed 's/searchstring/replacement/g'; mv $olddir $newdir; done
) (должны быть обратные галочки вокруг эха | sed newdir присвоение; я ценил бы комментарий, как включать обратные галочки в сегмент встроенного кода), find
должен быть -type f
Этого должно быть достаточно для получения Вас движение.
Быстрый и грязный способ сделать это мог быть:
Получите список всех файлов, которые соответствуют Вашему шаблону
# find /path -name \*pattern\* > filelist
Выполните итерации через список файлов со сценарием оболочки, делая независимо от того, что Вы хотите к каждой строке:
#!/bin/sh
for I in `cat filelist`
do
# for renaming, use mv
mv $I new.file.name
done