Поскольку другие ответы уже определили, ${f%.*}
расширен оболочкой, прежде чем она будет работать xargs
команда. Вам нужно это расширение для случая однажды для каждого имени файла с переменной оболочки f
набор к имени файла (передача -I f
не делает этого: xargs
не имеет никакого понятия переменной оболочки, она ищет строку f
в команде, поэтому если Вы использовали, например. xargs -I e echo …
это выполнило бы команды как ./somedir/somefile.wmacho .mp3
).
При продолжении этого подхода сказать xargs
вызвать оболочку, которая может выполнить расширение. Лучше, сказать find
— xargs
в основном устаревший инструмент и тверд использовать правильно, поскольку современные версии находки имеют конструкцию, которая делает то же задание (и больше) с меньшим количеством трудностей с инфраструктурой. Вместо find … -print0 | xargs -0 command …
, выполненный find … -exec command … {} +
.
find . -name '*.wma' -type f -exec sh -c 'for f; do echo "${f%.*}.mp3"; done' _ {} +
Аргумент _
$0
в оболочке; имена файлов передаются как позиционные параметры который for f; do …
циклы. Более простая версия этой команды выполняет отдельную оболочку для каждого файла, который эквивалентен, но немного медленнее:
find . -name '*.wma' -type f -exec sh -c 'echo "${0%.*}.mp3"' {} \;
Вы не должны на самом деле использовать find
здесь, принятие, Вы выполняете довольно недавнюю оболочку (ksh93, колотите ≥4.0, или zsh). В ударе, помещенном shopt -s globstar
в Вашем .bashrc
активироваться **/
шаблон шарика для рекурсивного вызова в подкаталогах (в ksh это set -o globstar
). Затем можно работать
for f in **/*.wma; do
echo "${f%.*}.mp3"
done
(Если Вам назвали каталоги *.wma
, добавить [ -f "$f" ] || continue
в начале цикла.)
Это происходило из-за неправильного присваиваемого идентификатора группы. Когда система была установлена недавно, система произвольно присвоила идентификатор 501 группы другой группе.
Во всех остающихся машинах лаборатории нам присвоили идентификатор 501 группы vboxusers. Это было причиной, пользователи LDAP не могли получить доступ к VirtualBox в той конкретной машине.
How can this be possible, as I copied the LDAP and NFS configuration
files from the working machines in the lab and used the same files in
the newly installed machine?
Поскольку я понимаю, что Вам нужна Та же Установка Сервера LDAP в Вашем LAB, ТАКИМ ОБРАЗОМ, мы должны экспортировать базу данных Master LDAP Server, и затем импортировать в Новый Сервер LDAP. если я корректен затем, можно следовать за этой установкой.
Примечание: это Руководство на основе RHEL5.x/CentOS 5.x
Установка использование Пакетов OpenLDAP:
yum install openldap
Настройте сервер, Редактирование /etc/openldap/slapd.conf
, можно настроить это настройки то же как Ведущее устройство
database bdb
suffix "dc=example,dc=com"
rootdn "cn=Manager,dc=example,dc=com"
rootpw secrete # or you can use encrypted pass using slappasswd
скопируйте требуемый файл
install -o ldap -g ldap /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
На Вашем Главном сервере экспортируйте все детали в файл LDIF.
slapcat -l master.ldif
Копия master.ldif
в новый сервер LDAP.
Теперь на Вашем Новом Сервере LDAP.
Для импорта записей, указанных в файле master.ldif в базу данных LDAP, дают команду:
slapadd -l ldif
Теперь Запустите Сервисное использование LDAP:
/etc/init.d/ldap start
На Клиентской Машине: Смонтируйте NFS на ДОМЕ, включите требуемые записи /etc/fstab
Затем включите Подлинное использование LDAP:
authconfig --enableldap --enableldapauth --ldapserver=NEW_LDAPSERVER_IP --
ldapbasedn="dc=example,dc=com" –update
По умолчанию Журналы ldap отключены, можно Включить Входу в систему LDAP использование Сервера LDAP:
Править /etc/syslog.conf
local4.* /var/log/ldap.log
Однажды перезапуск syslog
сервис
/etc/init.d/syslog restart