Предполагая bash
или друзей, вы можете использовать
mv public_html/*.??[gf] public_html/images/
или, точнее, с сопоставлением
mv public_html/*.{jpg,png,gif} public_html/images/
Вы можете использовать read
для разделения строк на основе пробелов (, которые, похоже, используются в вашем файле ). Что-то вроде этого:
while read set year; do
DoStuffWith "$set" "$year"
done <test.txt
Другие примечания:
Обратите внимание, что в приведенном выше примере я использовал имена переменных в нижнем регистре. Существует куча всех -имён заглавных букв со специальными значениями, и самый безопасный способ избежать конфликтов с ними — придерживаться нижних -или смешанных -переменных регистра (, если вы не хотите ] особое значение ).
Не перебирайте вывод ls
, просто используйте for i in *; do
. И дважды -цитируйте ссылку на $i
, чтобы в некоторых случаях избежать странного синтаксического анализа.
За исключением того, что вам не нужно этого делать, sed
может перебирать файлы самостоятельно, если вы используете sed -i "" 'whatever' *
.
В команде sed
похоже, что вы пытаетесь использовать подстановку переменных и двойные -кавычки внутри одинарных -строк в кавычках, и это не работает. Если вы не хотите, чтобы двойные -кавычки были буквально частью строк поиска/замены, используйте вместо этого:
sed -i "" "s/$set/$year/g" *
Если вам нужны буквальные двойные -кавычки при поиске и замене строк, экранируйте их:
sed -i "" "s/\"$set\"/\"$year\"/g" *
Похоже, вы планируете пройтись по файлу в цикле, и для каждой строки зациклиться на каждом файле, заменив одну эту строку. Почему бы не сделать за один прогон все замены? То есть вместо того, чтобы запускать sed
командой s/100/2007/g
, а затем снова командой s/FFF/1993/g
, а затем снова... почему бы не запустить ее только один раз командой s/100/2007/g; s/FFF/1993/g; s/7E7/1994/g;...
?
Вам нужно построить команду sed
в цикле, что-то вроде этого:
sedCommand=""
while read set year; do
sedCommand+="s/$set/$year/g; "
done <test.txt
sed -i "" "$sedCommand" *
Наконец, меня беспокоят подобные глобальные замены. Вы уверены, что «100» не встречается ни в одном файле, кроме тех случаев, когда его следует заменить на «2007»? Включает ли это файл test.txt?
У вас есть резервная копия всех этих файлов?Вы действительно должны, прежде чем бросать что-то подобное на что-то, что вы не хотите потерять.