Ограничение, которое вы упомянули, обычно связаны с использованием EXEC
, не специфичнее для отдельных команд. Цель XARGS
является именно для решения этой проблемы; XARGS
займет как можно больше аргументов, чтобы накормить команду. Это получит вам наименьшее количество командных звонков и, таким образом, хорошая производительность. Снижение количества аргументов для команды явно указано -N
, ничего не получит в этом отношении. Вы можете использовать -N
E.g. В тех случаях, когда команды ожидают определенного количества аргументов, с особым случаем, когда команда можно назвать один раз для каждого аргумента. (Обратите внимание, что находит
также имеет вариант -EXEC
и специальный терминатор +
для облегчения аналогичного поведения.)
Вот сценарий, который выполняет то, о чем вы просили:
ls /home/software/ | while read d
do
tar czf "/home/software/$d-$(date +%y%m%d).tar.gz" "/home/software/$d"
done
find /home/software -type f -name '*.tar.gz' -mtime +10 -exec rm {} \;
или
cd /home/software/
ls | while read d
do
tar czf "$d-$(date +%y%m%d).tar.gz" "$d"
done
find . -type f -name '*.tar.gz' -mtime +10 -exec rm {} \;