Как уменьшить количество выполнений с помощью xargs -I

#!/bin/sh

find . -name 'ABC_*.txt' | while read file; do
    res=$( echo "$file" | 
    sed -r 's#\S*_(....)(..)(..)(..)(..)(..).*#\1\2\3|\3.\2.\1 \4.\5.\6#' )

    col4=${res%|*}
    col5=${res#*|}

    sed -r -i.bak '
    s#(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|#\1|\2|\3|'"$col4"'|'"$col5"'|\6|\7|#' \
    "$file"
done
1
18.05.2017, 18:35
1 ответ

Я думаю, что единственный способ сделать это — создать простой сценарий-оболочку для вашей команды:

#!/bin/sh
echo start "$@" end

затем вы можете использовать xargs echo-wrapper

Конечно, вы можете сделать это встроенным:

xargs sh -c 'echo start "$@" end' sh <<EOF
hello 
world
EOF

] Обратите внимание на дополнительный sh в конце — это часть синтаксиса sh -c, он указывает $0 внутри оболочки.

3
27.01.2020, 23:24

Теги

Похожие вопросы