Я использую следующую команду find для переименования каталогов и файлов в системе Linux
примечание: см. Скрипт rename.pl ниже
find / -name 'host1' -print0 | xargs -0 /var/tmp/rename.pl 'print "changing $_\n"; s/host1/host_10/g'
чтобы установить параметр вместо имени host1, я установил следующее
OLD_HOST=host1
Пример:
find / -name "$OLD_HOST" -print0 | xargs -0 /var/tmp/rename.pl 'print "changing $_\n"; s/$OLD_HOST/host_10/g'
проблема в том, что теперь после установки $ OLD_HOSTS (как s / $ OLD_HOST / host_10 / g ')
не заменяет host1 на host_10
мой вопрос: как правильно использовать $ OLD_HOST в синтаксисе для замены host1 на host_10?
#
сценарий rename.pl:
#!/usr/bin/perl
#
# rename script examples from lwall:
# rename 's/\.orig$//' *.orig
# rename 'y/A-Z/a-z/ unless /^Make/' *
# rename '$_ .= ".bad"' *.f
# rename 'print "$_: "; s/foo/bar/ if <stdin> =~ /^y/i' *
$op = shift;
for (@ARGV) {
$was = $_;
eval $op;
die $@ if $@;
rename($was,$_) unless $was eq $_;
}