Стандартный Linux rename
управляйте, чтобы в странице справочника было сказано:
переименуйте переименует указанные файлы путем замены первого вхождения от на их имя к.
таким образом, это только для простого файла, переименовывает. Это - стандарт, переименовывают от util-linux, доступного во всех системах Linux, о которых я знаю.
Я думаю, что Вы, вероятно, пытаетесь использовать жемчуг Larry Wall в качестве примера, переименовывают сценарий. Если это - то, что Вы действительно хотите, создаете этот файл в своем пути:
#!/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 =~ /^y/i' *
$op = shift;
for (@ARGV) {
$was = $_;
eval $op;
die $@ if $@;
rename($was,$_) unless $was eq $_;
}
сделайте это исполняемым файлом с chmod 755 rename
, и звоните, это вместо системы переименовывает. Я протестировал его с Вашим примером, и это работает.
Я собираюсь предположить, что аргумент -f ожидает абсолютный путь к файлу и интерпретирует путь как относительный в противном случае. Вы запускаете эти команды из / etc / openldap? Работает ли использование slapadd -l /etc/openldap/root.ldif -f /etc/openldap/slapd.conf -d 10
? Вы выполняете команды как пользователь, который может читать этот файл?