Найдите основанные конвейеры - ваш друг.Этот ответ предполагает использование ОС на базе Linux / Unix.
Я настоятельно рекомендую просто вырезать каждую команду, по одной, вставлять в командную строку. Не пытайтесь превратить это в сценарий оболочки, пока у вас не появится больше опыта.,Убедитесь, что вы понимаете, что делает каждый шаг, и трижды убедитесь, что результаты действительно такие, какими они должны быть, а НЕ просто то, что вы хотите, чтобы это было ИЛИ предположить, что это должно быть; -!)
# goto the root of your new filesystem
cd /var/www/cms
# print out the filenames with the old path in it
find . -print | xargs grep -l "/media/sda1/www/quickstart-4.2.1/"
# find . -print all fileNames
# take output from find (via pipe)
# xargs manages creation of command line with filenames from pipe
# grep -l saarchs for target string and prints only file names
# make sure there are no files in this list that shouldn't be modified.
# backup files in list
find . -print | xargs -I {} /bin/cp {} {}.sav_20110405
# note that the sav_20110405 is date composed by YYYYMMDD.
# A good habit to get into
# run a test on one file from list above
testFile=/var/www/cms/yourFileNameHere.html
find . -print -name ${testFile} \
| grep -v 'sav_20110405$' \
| while read fName ; do
ex - ${fName} <<EOS
:%s/\/media\/sda1\/www\/quickstart-4.2.1/\/var\/www\/cms/g
:wq
EOS
done
Это хорошо, потому что с помощью решения sed вы должны управлять перенаправлением исправления в новый файл, а затем переименовывать исправленный файл в исходный файл.
Редактор ex похож на редактор vi, но предназначендля пакетного ввода инструкций И преимущество в том, что вы можете выполнить команду «write» и «q» выйти.
Важно Некоторые оболочки и / или команды ex имеют проблемы с такой конструкцией,Вот почему мы тестируем один файл с резервной копией.Прежде чем продолжить, убедитесь, что файл в порядке и файл резервной копии на месте.
# inspect the 'fixed file' and be *really* sure there it is correct
# also be sure the ${testFile}.sav_20110405 did NOT get modified.
# run command for all files
find . -print \
| grep -v 'sav_20110405$' \
| while read fName ; do
ex - ${fName} <<EOS
:%s/\/media\/sda1\/www\/quickstart-4.2.1/\/var\/www\/cms/
:wq
EOS
done
Запишите в свой список задач на 1 месяц позже, вернитесь и удалите сохраненные файлы.
find . -print -name '*.sav_20110405'
выберите имя файла
find . -print -name 'myTestFile.sav_20110405' | xargs /bin/rm
убедитесь, что это был единственный удаленный файл.
Теперь очистите остальные файлы
find . -print -name '*.sav_20110405' | xargs /bin/rm
Удачи И тройнойпроверьте все; -)!.
Надеюсь, это поможет.
PS, поскольку вы выглядите новым пользователем, если вы получите ответ, который поможет вам, не забудьте пометить его как принятый,и / или дайте ему + (или -) в качестве полезного ответа.