chown: missing operand after ‘root:users’












4















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?










share|improve this question


















  • 1





    chown -R root:users /somedir should handle this just fine.

    – jordanm
    Jan 2 at 2:04
















4















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?










share|improve this question


















  • 1





    chown -R root:users /somedir should handle this just fine.

    – jordanm
    Jan 2 at 2:04














4












4








4


1






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?










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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














  • 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










2 Answers
2






active

oldest

votes


















12














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.






share|improve this answer

































    5














    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.






    share|improve this answer





















    • 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











    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
    });


    }
    });














    draft saved

    draft discarded


















    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









    12














    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.






    share|improve this answer






























      12














      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.






      share|improve this answer




























        12












        12








        12







        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.






        share|improve this answer















        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.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Jan 2 at 2:32

























        answered Jan 2 at 2:27









        Jeff AJeff A

        3216




        3216

























            5














            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.






            share|improve this answer





















            • 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
















            5














            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.






            share|improve this answer





















            • 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














            5












            5








            5







            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.






            share|improve this answer















            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.







            share|improve this answer














            share|improve this answer



            share|improve this answer








            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














            • 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


















            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Can a sorcerer learn a 5th-level spell early by creating spell slots using the Font of Magic feature?

            Does disintegrating a polymorphed enemy still kill it after the 2018 errata?

            A Topological Invariant for $pi_3(U(n))$