chown: missing operand after ‘root:users’
I try to change owner to root:users recursively below a directory, if owner is other than root:users.
cd /dir/
find . ( ! -user root -o ! -group users ) -print0 | xargs -0 chown -vc root:users
I get error:
chown: missing operand after ‘root:users’
Try 'chown --help' for more information.
Why I get the error?
How can I fix it?
bash debian find chown
add a comment |
I try to change owner to root:users recursively below a directory, if owner is other than root:users.
cd /dir/
find . ( ! -user root -o ! -group users ) -print0 | xargs -0 chown -vc root:users
I get error:
chown: missing operand after ‘root:users’
Try 'chown --help' for more information.
Why I get the error?
How can I fix it?
bash debian find chown
1
chown -R root:users /somedir
should handle this just fine.
– jordanm
Jan 2 at 2:04
add a comment |
I try to change owner to root:users recursively below a directory, if owner is other than root:users.
cd /dir/
find . ( ! -user root -o ! -group users ) -print0 | xargs -0 chown -vc root:users
I get error:
chown: missing operand after ‘root:users’
Try 'chown --help' for more information.
Why I get the error?
How can I fix it?
bash debian find chown
I try to change owner to root:users recursively below a directory, if owner is other than root:users.
cd /dir/
find . ( ! -user root -o ! -group users ) -print0 | xargs -0 chown -vc root:users
I get error:
chown: missing operand after ‘root:users’
Try 'chown --help' for more information.
Why I get the error?
How can I fix it?
bash debian find chown
bash debian find chown
asked Jan 2 at 2:02
klorklor
180214
180214
1
chown -R root:users /somedir
should handle this just fine.
– jordanm
Jan 2 at 2:04
add a comment |
1
chown -R root:users /somedir
should handle this just fine.
– jordanm
Jan 2 at 2:04
1
1
chown -R root:users /somedir
should handle this just fine.– jordanm
Jan 2 at 2:04
chown -R root:users /somedir
should handle this just fine.– jordanm
Jan 2 at 2:04
add a comment |
2 Answers
2
active
oldest
votes
Use the recursive switch on chown:
chown -R root:users dir
And that should do it.
More to why you have an error: if the find command doesn't find any files, then chown will be executed without an operand at the end, which generates this error.
If you are really intent on sticking with your original command format, you can add the -r switch to xargs and it should get rid of the error when no files are found.
add a comment |
In addition to the observation that you can use the -R
flag to chown
, the reason why you are getting the error message is almost certainly[1] due to you having no files which need to be changed. The gnu version of xargs
has an extra flag -r
to tell xargs not to run the command if there is no input to the command.
However using xargs
is the wrong approach, a POSIX version of find
will batch up commands for you. Use
find . ( ! -user root -o ! -group users ) -exec chown -vc root:users {} +
note the final +
rather than the often seen ;
in examples of using -exec
. With ;
the command is run once per matching file, but with +
files are grouped and run in batches.
There are some cases where xargs should still be used, for example if you wanted to read from the input and process the lines in pairs, but these are rare. Almost always you want to either run a command per file or else batch up as many files as possible and run one command per batch.
[1] Depending on the xargs implementation, you might have exactly filled a number of command buffers with files, but much more probable is no files at all.
4
If you're going to say "note the..."; you should explain what the difference is. I assume it's batching? But it would be clearer if you stated that explicitly.
– Roger Lipscombe
Jan 2 at 12:33
@RogerLipscombe Better? pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html is the current standard.
– icarus
Jan 3 at 2:32
Much better. Thanks.
– Roger Lipscombe
Jan 3 at 9:04
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
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%2f491948%2fchown-missing-operand-after-rootusers%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Use the recursive switch on chown:
chown -R root:users dir
And that should do it.
More to why you have an error: if the find command doesn't find any files, then chown will be executed without an operand at the end, which generates this error.
If you are really intent on sticking with your original command format, you can add the -r switch to xargs and it should get rid of the error when no files are found.
add a comment |
Use the recursive switch on chown:
chown -R root:users dir
And that should do it.
More to why you have an error: if the find command doesn't find any files, then chown will be executed without an operand at the end, which generates this error.
If you are really intent on sticking with your original command format, you can add the -r switch to xargs and it should get rid of the error when no files are found.
add a comment |
Use the recursive switch on chown:
chown -R root:users dir
And that should do it.
More to why you have an error: if the find command doesn't find any files, then chown will be executed without an operand at the end, which generates this error.
If you are really intent on sticking with your original command format, you can add the -r switch to xargs and it should get rid of the error when no files are found.
Use the recursive switch on chown:
chown -R root:users dir
And that should do it.
More to why you have an error: if the find command doesn't find any files, then chown will be executed without an operand at the end, which generates this error.
If you are really intent on sticking with your original command format, you can add the -r switch to xargs and it should get rid of the error when no files are found.
edited Jan 2 at 2:32
answered Jan 2 at 2:27
Jeff AJeff A
3216
3216
add a comment |
add a comment |
In addition to the observation that you can use the -R
flag to chown
, the reason why you are getting the error message is almost certainly[1] due to you having no files which need to be changed. The gnu version of xargs
has an extra flag -r
to tell xargs not to run the command if there is no input to the command.
However using xargs
is the wrong approach, a POSIX version of find
will batch up commands for you. Use
find . ( ! -user root -o ! -group users ) -exec chown -vc root:users {} +
note the final +
rather than the often seen ;
in examples of using -exec
. With ;
the command is run once per matching file, but with +
files are grouped and run in batches.
There are some cases where xargs should still be used, for example if you wanted to read from the input and process the lines in pairs, but these are rare. Almost always you want to either run a command per file or else batch up as many files as possible and run one command per batch.
[1] Depending on the xargs implementation, you might have exactly filled a number of command buffers with files, but much more probable is no files at all.
4
If you're going to say "note the..."; you should explain what the difference is. I assume it's batching? But it would be clearer if you stated that explicitly.
– Roger Lipscombe
Jan 2 at 12:33
@RogerLipscombe Better? pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html is the current standard.
– icarus
Jan 3 at 2:32
Much better. Thanks.
– Roger Lipscombe
Jan 3 at 9:04
add a comment |
In addition to the observation that you can use the -R
flag to chown
, the reason why you are getting the error message is almost certainly[1] due to you having no files which need to be changed. The gnu version of xargs
has an extra flag -r
to tell xargs not to run the command if there is no input to the command.
However using xargs
is the wrong approach, a POSIX version of find
will batch up commands for you. Use
find . ( ! -user root -o ! -group users ) -exec chown -vc root:users {} +
note the final +
rather than the often seen ;
in examples of using -exec
. With ;
the command is run once per matching file, but with +
files are grouped and run in batches.
There are some cases where xargs should still be used, for example if you wanted to read from the input and process the lines in pairs, but these are rare. Almost always you want to either run a command per file or else batch up as many files as possible and run one command per batch.
[1] Depending on the xargs implementation, you might have exactly filled a number of command buffers with files, but much more probable is no files at all.
4
If you're going to say "note the..."; you should explain what the difference is. I assume it's batching? But it would be clearer if you stated that explicitly.
– Roger Lipscombe
Jan 2 at 12:33
@RogerLipscombe Better? pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html is the current standard.
– icarus
Jan 3 at 2:32
Much better. Thanks.
– Roger Lipscombe
Jan 3 at 9:04
add a comment |
In addition to the observation that you can use the -R
flag to chown
, the reason why you are getting the error message is almost certainly[1] due to you having no files which need to be changed. The gnu version of xargs
has an extra flag -r
to tell xargs not to run the command if there is no input to the command.
However using xargs
is the wrong approach, a POSIX version of find
will batch up commands for you. Use
find . ( ! -user root -o ! -group users ) -exec chown -vc root:users {} +
note the final +
rather than the often seen ;
in examples of using -exec
. With ;
the command is run once per matching file, but with +
files are grouped and run in batches.
There are some cases where xargs should still be used, for example if you wanted to read from the input and process the lines in pairs, but these are rare. Almost always you want to either run a command per file or else batch up as many files as possible and run one command per batch.
[1] Depending on the xargs implementation, you might have exactly filled a number of command buffers with files, but much more probable is no files at all.
In addition to the observation that you can use the -R
flag to chown
, the reason why you are getting the error message is almost certainly[1] due to you having no files which need to be changed. The gnu version of xargs
has an extra flag -r
to tell xargs not to run the command if there is no input to the command.
However using xargs
is the wrong approach, a POSIX version of find
will batch up commands for you. Use
find . ( ! -user root -o ! -group users ) -exec chown -vc root:users {} +
note the final +
rather than the often seen ;
in examples of using -exec
. With ;
the command is run once per matching file, but with +
files are grouped and run in batches.
There are some cases where xargs should still be used, for example if you wanted to read from the input and process the lines in pairs, but these are rare. Almost always you want to either run a command per file or else batch up as many files as possible and run one command per batch.
[1] Depending on the xargs implementation, you might have exactly filled a number of command buffers with files, but much more probable is no files at all.
edited Jan 3 at 2:26
answered Jan 2 at 10:09
icarusicarus
5,7411929
5,7411929
4
If you're going to say "note the..."; you should explain what the difference is. I assume it's batching? But it would be clearer if you stated that explicitly.
– Roger Lipscombe
Jan 2 at 12:33
@RogerLipscombe Better? pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html is the current standard.
– icarus
Jan 3 at 2:32
Much better. Thanks.
– Roger Lipscombe
Jan 3 at 9:04
add a comment |
4
If you're going to say "note the..."; you should explain what the difference is. I assume it's batching? But it would be clearer if you stated that explicitly.
– Roger Lipscombe
Jan 2 at 12:33
@RogerLipscombe Better? pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html is the current standard.
– icarus
Jan 3 at 2:32
Much better. Thanks.
– Roger Lipscombe
Jan 3 at 9:04
4
4
If you're going to say "note the..."; you should explain what the difference is. I assume it's batching? But it would be clearer if you stated that explicitly.
– Roger Lipscombe
Jan 2 at 12:33
If you're going to say "note the..."; you should explain what the difference is. I assume it's batching? But it would be clearer if you stated that explicitly.
– Roger Lipscombe
Jan 2 at 12:33
@RogerLipscombe Better? pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html is the current standard.
– icarus
Jan 3 at 2:32
@RogerLipscombe Better? pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html is the current standard.
– icarus
Jan 3 at 2:32
Much better. Thanks.
– Roger Lipscombe
Jan 3 at 9:04
Much better. Thanks.
– Roger Lipscombe
Jan 3 at 9:04
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
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%2f491948%2fchown-missing-operand-after-rootusers%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
1
chown -R root:users /somedir
should handle this just fine.– jordanm
Jan 2 at 2:04