Здесь было бы проще использовать специальные инструменты для переименования файлов, такие как prename
, mmv
или zsh
zmv
. Но если вам нужно использовать POSIX sh
и утилиты, я бы сделал что-то вроде:
find. ! -name. -prune \( -name '*.xxx' -o -name '*.yyy' \) -type f -exec sh -c '
ret=0
for file do
name=${file##*/}
dstdir=Out/$(printf "%s\n" "${name%%-*}" | tr -s "[:space:]" "[_*]")
mkdir -p "$dstdir" &&
cp "$file" "$dstdir/" &&
true > "$file" || ret=$?
done
exit "$ret"' sh {} +
(также избегая нескольких ваших GNUизмов ).
У меня была такая же проблема в среде FreeIPA. Во-первых, я пробовал что-то подобное, но модифицируя docker.socket , вы получаете ошибку о цикле заказа. Наконец, я просто добавил эту строку в docker.service , и у меня это сработало :
.Wants=network-online.target sssd.service
/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target sssd.service
Requires=docker.socket containerd.service