find -exec {} + argument list limit
up vote
4
down vote
favorite
I know that when the maximum argument list size is reached, xargs
keeps creating new lists until all of the files are included;
but does find -exec <command> {} +
do the same thing or will it not work if the size of the list exceeds the output of getconf ARG_MAX
?
find xargs arguments
add a comment |
up vote
4
down vote
favorite
I know that when the maximum argument list size is reached, xargs
keeps creating new lists until all of the files are included;
but does find -exec <command> {} +
do the same thing or will it not work if the size of the list exceeds the output of getconf ARG_MAX
?
find xargs arguments
add a comment |
up vote
4
down vote
favorite
up vote
4
down vote
favorite
I know that when the maximum argument list size is reached, xargs
keeps creating new lists until all of the files are included;
but does find -exec <command> {} +
do the same thing or will it not work if the size of the list exceeds the output of getconf ARG_MAX
?
find xargs arguments
I know that when the maximum argument list size is reached, xargs
keeps creating new lists until all of the files are included;
but does find -exec <command> {} +
do the same thing or will it not work if the size of the list exceeds the output of getconf ARG_MAX
?
find xargs arguments
find xargs arguments
asked Nov 20 at 10:32
EmmaV
1,0541330
1,0541330
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
9
down vote
accepted
Yes, find -exec ... {} +
runs the given command as many times as necessary to accommodate all the arguments without exceeding the maximum argument list size in each invocation. This is specified by POSIX:
If the primary expression is punctuated by a <plus-sign>, the primary shall always evaluate as true, and the pathnames for which the primary is evaluated shall be aggregated into sets. [...] An argument containing only the two characters "
{}
" shall be replaced by the set of aggregated pathnames, with each pathname passed as a separate argument to the invoked utility in the same order that it was aggregated. The size of any set of two or more pathnames shall be limited such that execution of the utility does not cause the system's {ARG_MAX} limit to be exceeded.
(emphasis mine).
add a comment |
up vote
3
down vote
It does the same thing, i.e. using -exec ... {} +
will execute the given utilitity with batches of found pathnames, one or several times. This is what this syntax is for.
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
9
down vote
accepted
Yes, find -exec ... {} +
runs the given command as many times as necessary to accommodate all the arguments without exceeding the maximum argument list size in each invocation. This is specified by POSIX:
If the primary expression is punctuated by a <plus-sign>, the primary shall always evaluate as true, and the pathnames for which the primary is evaluated shall be aggregated into sets. [...] An argument containing only the two characters "
{}
" shall be replaced by the set of aggregated pathnames, with each pathname passed as a separate argument to the invoked utility in the same order that it was aggregated. The size of any set of two or more pathnames shall be limited such that execution of the utility does not cause the system's {ARG_MAX} limit to be exceeded.
(emphasis mine).
add a comment |
up vote
9
down vote
accepted
Yes, find -exec ... {} +
runs the given command as many times as necessary to accommodate all the arguments without exceeding the maximum argument list size in each invocation. This is specified by POSIX:
If the primary expression is punctuated by a <plus-sign>, the primary shall always evaluate as true, and the pathnames for which the primary is evaluated shall be aggregated into sets. [...] An argument containing only the two characters "
{}
" shall be replaced by the set of aggregated pathnames, with each pathname passed as a separate argument to the invoked utility in the same order that it was aggregated. The size of any set of two or more pathnames shall be limited such that execution of the utility does not cause the system's {ARG_MAX} limit to be exceeded.
(emphasis mine).
add a comment |
up vote
9
down vote
accepted
up vote
9
down vote
accepted
Yes, find -exec ... {} +
runs the given command as many times as necessary to accommodate all the arguments without exceeding the maximum argument list size in each invocation. This is specified by POSIX:
If the primary expression is punctuated by a <plus-sign>, the primary shall always evaluate as true, and the pathnames for which the primary is evaluated shall be aggregated into sets. [...] An argument containing only the two characters "
{}
" shall be replaced by the set of aggregated pathnames, with each pathname passed as a separate argument to the invoked utility in the same order that it was aggregated. The size of any set of two or more pathnames shall be limited such that execution of the utility does not cause the system's {ARG_MAX} limit to be exceeded.
(emphasis mine).
Yes, find -exec ... {} +
runs the given command as many times as necessary to accommodate all the arguments without exceeding the maximum argument list size in each invocation. This is specified by POSIX:
If the primary expression is punctuated by a <plus-sign>, the primary shall always evaluate as true, and the pathnames for which the primary is evaluated shall be aggregated into sets. [...] An argument containing only the two characters "
{}
" shall be replaced by the set of aggregated pathnames, with each pathname passed as a separate argument to the invoked utility in the same order that it was aggregated. The size of any set of two or more pathnames shall be limited such that execution of the utility does not cause the system's {ARG_MAX} limit to be exceeded.
(emphasis mine).
answered Nov 20 at 10:35
Stephen Kitt
158k23346423
158k23346423
add a comment |
add a comment |
up vote
3
down vote
It does the same thing, i.e. using -exec ... {} +
will execute the given utilitity with batches of found pathnames, one or several times. This is what this syntax is for.
add a comment |
up vote
3
down vote
It does the same thing, i.e. using -exec ... {} +
will execute the given utilitity with batches of found pathnames, one or several times. This is what this syntax is for.
add a comment |
up vote
3
down vote
up vote
3
down vote
It does the same thing, i.e. using -exec ... {} +
will execute the given utilitity with batches of found pathnames, one or several times. This is what this syntax is for.
It does the same thing, i.e. using -exec ... {} +
will execute the given utilitity with batches of found pathnames, one or several times. This is what this syntax is for.
edited Nov 20 at 10:54
answered Nov 20 at 10:36
Kusalananda
117k16221359
117k16221359
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f482930%2ffind-exec-argument-list-limit%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown