How to list *.tar.gz, one filename per line?












7














I am trying to list every .tar.gz file, only using the following command:



ls *.tar.gz -l



...It shows me the following list:



-rw-rw-r-- 1 osm osm  949 Nov 27 16:17 file1.tar.gz
-rw-rw-r-- 1 osm osm 949 Nov 27 16:17 file2.tar.gz


However, I just need to list it this way:



file1.tar.gz 
file2.tar.gz


and also not:



file1.tar.gz file2.tar.gz


How is this "properly" done?










share|improve this question




















  • 6




    it is a good habit to use options before filenames. and you need to use -1 instead of -l
    – AnonymousLurker
    Nov 27 '18 at 16:53






  • 17




    ls -1 *.tar.gz, but what do you want to use the list for? If you are doing something to those filenames, then ls is not the right way to do it. See Why *not* parse `ls` (and what do to instead)?
    – Kusalananda
    Nov 27 '18 at 16:53








  • 3




    the manual you need is man ls. Ensure that your display font has good contrast between 1 (one) and l (lower case letter ell).
    – ctrl-alt-delor
    Nov 27 '18 at 19:19






  • 3




    Possible duplicate of Output from ls has newlines but displays on a single line. Why?
    – Julien Lopez
    Nov 28 '18 at 7:27
















7














I am trying to list every .tar.gz file, only using the following command:



ls *.tar.gz -l



...It shows me the following list:



-rw-rw-r-- 1 osm osm  949 Nov 27 16:17 file1.tar.gz
-rw-rw-r-- 1 osm osm 949 Nov 27 16:17 file2.tar.gz


However, I just need to list it this way:



file1.tar.gz 
file2.tar.gz


and also not:



file1.tar.gz file2.tar.gz


How is this "properly" done?










share|improve this question




















  • 6




    it is a good habit to use options before filenames. and you need to use -1 instead of -l
    – AnonymousLurker
    Nov 27 '18 at 16:53






  • 17




    ls -1 *.tar.gz, but what do you want to use the list for? If you are doing something to those filenames, then ls is not the right way to do it. See Why *not* parse `ls` (and what do to instead)?
    – Kusalananda
    Nov 27 '18 at 16:53








  • 3




    the manual you need is man ls. Ensure that your display font has good contrast between 1 (one) and l (lower case letter ell).
    – ctrl-alt-delor
    Nov 27 '18 at 19:19






  • 3




    Possible duplicate of Output from ls has newlines but displays on a single line. Why?
    – Julien Lopez
    Nov 28 '18 at 7:27














7












7








7


3





I am trying to list every .tar.gz file, only using the following command:



ls *.tar.gz -l



...It shows me the following list:



-rw-rw-r-- 1 osm osm  949 Nov 27 16:17 file1.tar.gz
-rw-rw-r-- 1 osm osm 949 Nov 27 16:17 file2.tar.gz


However, I just need to list it this way:



file1.tar.gz 
file2.tar.gz


and also not:



file1.tar.gz file2.tar.gz


How is this "properly" done?










share|improve this question















I am trying to list every .tar.gz file, only using the following command:



ls *.tar.gz -l



...It shows me the following list:



-rw-rw-r-- 1 osm osm  949 Nov 27 16:17 file1.tar.gz
-rw-rw-r-- 1 osm osm 949 Nov 27 16:17 file2.tar.gz


However, I just need to list it this way:



file1.tar.gz 
file2.tar.gz


and also not:



file1.tar.gz file2.tar.gz


How is this "properly" done?







ls






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 29 '18 at 8:33









Jesse Steele

12717




12717










asked Nov 27 '18 at 16:51









McLan

1704




1704








  • 6




    it is a good habit to use options before filenames. and you need to use -1 instead of -l
    – AnonymousLurker
    Nov 27 '18 at 16:53






  • 17




    ls -1 *.tar.gz, but what do you want to use the list for? If you are doing something to those filenames, then ls is not the right way to do it. See Why *not* parse `ls` (and what do to instead)?
    – Kusalananda
    Nov 27 '18 at 16:53








  • 3




    the manual you need is man ls. Ensure that your display font has good contrast between 1 (one) and l (lower case letter ell).
    – ctrl-alt-delor
    Nov 27 '18 at 19:19






  • 3




    Possible duplicate of Output from ls has newlines but displays on a single line. Why?
    – Julien Lopez
    Nov 28 '18 at 7:27














  • 6




    it is a good habit to use options before filenames. and you need to use -1 instead of -l
    – AnonymousLurker
    Nov 27 '18 at 16:53






  • 17




    ls -1 *.tar.gz, but what do you want to use the list for? If you are doing something to those filenames, then ls is not the right way to do it. See Why *not* parse `ls` (and what do to instead)?
    – Kusalananda
    Nov 27 '18 at 16:53








  • 3




    the manual you need is man ls. Ensure that your display font has good contrast between 1 (one) and l (lower case letter ell).
    – ctrl-alt-delor
    Nov 27 '18 at 19:19






  • 3




    Possible duplicate of Output from ls has newlines but displays on a single line. Why?
    – Julien Lopez
    Nov 28 '18 at 7:27








6




6




it is a good habit to use options before filenames. and you need to use -1 instead of -l
– AnonymousLurker
Nov 27 '18 at 16:53




it is a good habit to use options before filenames. and you need to use -1 instead of -l
– AnonymousLurker
Nov 27 '18 at 16:53




17




17




ls -1 *.tar.gz, but what do you want to use the list for? If you are doing something to those filenames, then ls is not the right way to do it. See Why *not* parse `ls` (and what do to instead)?
– Kusalananda
Nov 27 '18 at 16:53






ls -1 *.tar.gz, but what do you want to use the list for? If you are doing something to those filenames, then ls is not the right way to do it. See Why *not* parse `ls` (and what do to instead)?
– Kusalananda
Nov 27 '18 at 16:53






3




3




the manual you need is man ls. Ensure that your display font has good contrast between 1 (one) and l (lower case letter ell).
– ctrl-alt-delor
Nov 27 '18 at 19:19




the manual you need is man ls. Ensure that your display font has good contrast between 1 (one) and l (lower case letter ell).
– ctrl-alt-delor
Nov 27 '18 at 19:19




3




3




Possible duplicate of Output from ls has newlines but displays on a single line. Why?
– Julien Lopez
Nov 28 '18 at 7:27




Possible duplicate of Output from ls has newlines but displays on a single line. Why?
– Julien Lopez
Nov 28 '18 at 7:27










5 Answers
5






active

oldest

votes


















38














The -1 option (the digit “one”, not lower-case “L”) will list one file per line with no other information:



ls -1 -- *.tar.gz





share|improve this answer

















  • 1




    Why the double dashes? ls -1 *.tar.gz works just as well.
    – RonJohn
    Nov 28 '18 at 19:50






  • 8




    @RonJohn it avoids surprises with filenames starting with -.
    – Stephen Kitt
    Nov 28 '18 at 19:54






  • 4




    Specifically... Say I was an attacker, and had the following files: .hiddenfile, benign.php, evil.bin, --hide=*evil*; without the -- you won't see evil.bin or --hide=*evil*.
    – wizzwizz4
    Nov 28 '18 at 22:02












  • I'm utterly disppointed that there is no -2 (or -3 etc.)! ;-)
    – Peter A. Schneider
    Nov 29 '18 at 10:50






  • 1




    (... which made me look up columns!)
    – Peter A. Schneider
    Nov 29 '18 at 10:56



















19














If you only need the filenames, you could use printf:



printf '%sn' *.tar.gz


... the shell will expand the *.tar.gz wildcard to the filenames, then printf will print them, with each followed by a newline. This output would differ a bit from that of ls in the case of filenames with newlines embedded in them:



setup



$ touch file{1,2}.tar.gz
$ touch file$'n'3.tar.gz


ls



$ ls -1 -- *.tar.gz
file1.tar.gz
file2.tar.gz
file?3.tar.gz


printf



$ printf '%sn' *.tar.gz
file1.tar.gz
file2.tar.gz
file
3.tar.gz





share|improve this answer

















  • 6




    See also ls -b, ls -Q, ls --quoting-style=....
    – Stephen Kitt
    Nov 27 '18 at 17:10










  • And printf '%qn'. (Both GNU.)
    – dave_thompson_085
    Nov 29 '18 at 12:27



















9














ls behaves differently when its output is piped. For example:



ls          # outputs filenames in columns
ls | cat # passes one filename per line to the cat command


So if you want see all your *.tar.gz files, one per line, you can do this:



ls *.tar.gz | cat


But what if you don't want to pipe your output? That is, is there a way to force ls to output the filenames one to a line without piping the output?



Yes, with the -1 switch. (That's a dash with the number 1.) So you can use these commands:



ls -1             # shows all (non-hidden) files, one per line
ls -1 *.tar.gz # shows only *.tar.gz files, one per line





share|improve this answer































    7














    Or with GNU find:



    find  -name "*.tar.gz"  -printf '%Pn'


    In contrary to ls with * it will search for .tar.gz files recursively:



    $ find  -name "*.tar.gz"  -printf '%Pn'
    file1.tar.gz
    dir/file3.tar.gz
    file2.tar.gz





    share|improve this answer





















    • Why -printf '%Pn' rather than just -print - at which point any Posix compatible find will work.
      – Martin Bonner
      Nov 29 '18 at 14:18










    • @MartinBonner because -print will add ./ before the filename.
      – Arkadiusz Drabczyk
      Nov 29 '18 at 14:59



















    4














    A slightly more roundabout and loopy way:



    for i in *.tar.gz; do
    echo "$i"
    done


    EDIT: added quotes to handle weird filenames






    share|improve this answer



















    • 5




      touch -- '-e a.tar.gz' for a reason to quote your variables and unix.stackexchange.com/q/65803/117549 for reasons to use printf instead of echo
      – Jeff Schaller
      Nov 27 '18 at 20:49










    • oof, I just spent 5 minutes trying to figure out how to remove the resulting -e a.tar.gz file
      – snetch
      Nov 27 '18 at 20:57






    • 3




      sorry! rm -- '-e a.tar.gz' should do the trick
      – Jeff Schaller
      Nov 27 '18 at 21:01










    • You're good, it was a lesson, and I did learn that -- works for rm and a lot of others.
      – snetch
      Nov 27 '18 at 21:02










    • Thank you for that. It wouldn't be a complete question if someone didn't suggest a for-do loop to solve the problem. lol Upvoting.
      – Jesse Steele
      Nov 29 '18 at 0:02











    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%2f484481%2fhow-to-list-tar-gz-one-filename-per-line%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    5 Answers
    5






    active

    oldest

    votes








    5 Answers
    5






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    38














    The -1 option (the digit “one”, not lower-case “L”) will list one file per line with no other information:



    ls -1 -- *.tar.gz





    share|improve this answer

















    • 1




      Why the double dashes? ls -1 *.tar.gz works just as well.
      – RonJohn
      Nov 28 '18 at 19:50






    • 8




      @RonJohn it avoids surprises with filenames starting with -.
      – Stephen Kitt
      Nov 28 '18 at 19:54






    • 4




      Specifically... Say I was an attacker, and had the following files: .hiddenfile, benign.php, evil.bin, --hide=*evil*; without the -- you won't see evil.bin or --hide=*evil*.
      – wizzwizz4
      Nov 28 '18 at 22:02












    • I'm utterly disppointed that there is no -2 (or -3 etc.)! ;-)
      – Peter A. Schneider
      Nov 29 '18 at 10:50






    • 1




      (... which made me look up columns!)
      – Peter A. Schneider
      Nov 29 '18 at 10:56
















    38














    The -1 option (the digit “one”, not lower-case “L”) will list one file per line with no other information:



    ls -1 -- *.tar.gz





    share|improve this answer

















    • 1




      Why the double dashes? ls -1 *.tar.gz works just as well.
      – RonJohn
      Nov 28 '18 at 19:50






    • 8




      @RonJohn it avoids surprises with filenames starting with -.
      – Stephen Kitt
      Nov 28 '18 at 19:54






    • 4




      Specifically... Say I was an attacker, and had the following files: .hiddenfile, benign.php, evil.bin, --hide=*evil*; without the -- you won't see evil.bin or --hide=*evil*.
      – wizzwizz4
      Nov 28 '18 at 22:02












    • I'm utterly disppointed that there is no -2 (or -3 etc.)! ;-)
      – Peter A. Schneider
      Nov 29 '18 at 10:50






    • 1




      (... which made me look up columns!)
      – Peter A. Schneider
      Nov 29 '18 at 10:56














    38












    38








    38






    The -1 option (the digit “one”, not lower-case “L”) will list one file per line with no other information:



    ls -1 -- *.tar.gz





    share|improve this answer












    The -1 option (the digit “one”, not lower-case “L”) will list one file per line with no other information:



    ls -1 -- *.tar.gz






    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Nov 27 '18 at 16:52









    Stephen Kitt

    164k24365444




    164k24365444








    • 1




      Why the double dashes? ls -1 *.tar.gz works just as well.
      – RonJohn
      Nov 28 '18 at 19:50






    • 8




      @RonJohn it avoids surprises with filenames starting with -.
      – Stephen Kitt
      Nov 28 '18 at 19:54






    • 4




      Specifically... Say I was an attacker, and had the following files: .hiddenfile, benign.php, evil.bin, --hide=*evil*; without the -- you won't see evil.bin or --hide=*evil*.
      – wizzwizz4
      Nov 28 '18 at 22:02












    • I'm utterly disppointed that there is no -2 (or -3 etc.)! ;-)
      – Peter A. Schneider
      Nov 29 '18 at 10:50






    • 1




      (... which made me look up columns!)
      – Peter A. Schneider
      Nov 29 '18 at 10:56














    • 1




      Why the double dashes? ls -1 *.tar.gz works just as well.
      – RonJohn
      Nov 28 '18 at 19:50






    • 8




      @RonJohn it avoids surprises with filenames starting with -.
      – Stephen Kitt
      Nov 28 '18 at 19:54






    • 4




      Specifically... Say I was an attacker, and had the following files: .hiddenfile, benign.php, evil.bin, --hide=*evil*; without the -- you won't see evil.bin or --hide=*evil*.
      – wizzwizz4
      Nov 28 '18 at 22:02












    • I'm utterly disppointed that there is no -2 (or -3 etc.)! ;-)
      – Peter A. Schneider
      Nov 29 '18 at 10:50






    • 1




      (... which made me look up columns!)
      – Peter A. Schneider
      Nov 29 '18 at 10:56








    1




    1




    Why the double dashes? ls -1 *.tar.gz works just as well.
    – RonJohn
    Nov 28 '18 at 19:50




    Why the double dashes? ls -1 *.tar.gz works just as well.
    – RonJohn
    Nov 28 '18 at 19:50




    8




    8




    @RonJohn it avoids surprises with filenames starting with -.
    – Stephen Kitt
    Nov 28 '18 at 19:54




    @RonJohn it avoids surprises with filenames starting with -.
    – Stephen Kitt
    Nov 28 '18 at 19:54




    4




    4




    Specifically... Say I was an attacker, and had the following files: .hiddenfile, benign.php, evil.bin, --hide=*evil*; without the -- you won't see evil.bin or --hide=*evil*.
    – wizzwizz4
    Nov 28 '18 at 22:02






    Specifically... Say I was an attacker, and had the following files: .hiddenfile, benign.php, evil.bin, --hide=*evil*; without the -- you won't see evil.bin or --hide=*evil*.
    – wizzwizz4
    Nov 28 '18 at 22:02














    I'm utterly disppointed that there is no -2 (or -3 etc.)! ;-)
    – Peter A. Schneider
    Nov 29 '18 at 10:50




    I'm utterly disppointed that there is no -2 (or -3 etc.)! ;-)
    – Peter A. Schneider
    Nov 29 '18 at 10:50




    1




    1




    (... which made me look up columns!)
    – Peter A. Schneider
    Nov 29 '18 at 10:56




    (... which made me look up columns!)
    – Peter A. Schneider
    Nov 29 '18 at 10:56













    19














    If you only need the filenames, you could use printf:



    printf '%sn' *.tar.gz


    ... the shell will expand the *.tar.gz wildcard to the filenames, then printf will print them, with each followed by a newline. This output would differ a bit from that of ls in the case of filenames with newlines embedded in them:



    setup



    $ touch file{1,2}.tar.gz
    $ touch file$'n'3.tar.gz


    ls



    $ ls -1 -- *.tar.gz
    file1.tar.gz
    file2.tar.gz
    file?3.tar.gz


    printf



    $ printf '%sn' *.tar.gz
    file1.tar.gz
    file2.tar.gz
    file
    3.tar.gz





    share|improve this answer

















    • 6




      See also ls -b, ls -Q, ls --quoting-style=....
      – Stephen Kitt
      Nov 27 '18 at 17:10










    • And printf '%qn'. (Both GNU.)
      – dave_thompson_085
      Nov 29 '18 at 12:27
















    19














    If you only need the filenames, you could use printf:



    printf '%sn' *.tar.gz


    ... the shell will expand the *.tar.gz wildcard to the filenames, then printf will print them, with each followed by a newline. This output would differ a bit from that of ls in the case of filenames with newlines embedded in them:



    setup



    $ touch file{1,2}.tar.gz
    $ touch file$'n'3.tar.gz


    ls



    $ ls -1 -- *.tar.gz
    file1.tar.gz
    file2.tar.gz
    file?3.tar.gz


    printf



    $ printf '%sn' *.tar.gz
    file1.tar.gz
    file2.tar.gz
    file
    3.tar.gz





    share|improve this answer

















    • 6




      See also ls -b, ls -Q, ls --quoting-style=....
      – Stephen Kitt
      Nov 27 '18 at 17:10










    • And printf '%qn'. (Both GNU.)
      – dave_thompson_085
      Nov 29 '18 at 12:27














    19












    19








    19






    If you only need the filenames, you could use printf:



    printf '%sn' *.tar.gz


    ... the shell will expand the *.tar.gz wildcard to the filenames, then printf will print them, with each followed by a newline. This output would differ a bit from that of ls in the case of filenames with newlines embedded in them:



    setup



    $ touch file{1,2}.tar.gz
    $ touch file$'n'3.tar.gz


    ls



    $ ls -1 -- *.tar.gz
    file1.tar.gz
    file2.tar.gz
    file?3.tar.gz


    printf



    $ printf '%sn' *.tar.gz
    file1.tar.gz
    file2.tar.gz
    file
    3.tar.gz





    share|improve this answer












    If you only need the filenames, you could use printf:



    printf '%sn' *.tar.gz


    ... the shell will expand the *.tar.gz wildcard to the filenames, then printf will print them, with each followed by a newline. This output would differ a bit from that of ls in the case of filenames with newlines embedded in them:



    setup



    $ touch file{1,2}.tar.gz
    $ touch file$'n'3.tar.gz


    ls



    $ ls -1 -- *.tar.gz
    file1.tar.gz
    file2.tar.gz
    file?3.tar.gz


    printf



    $ printf '%sn' *.tar.gz
    file1.tar.gz
    file2.tar.gz
    file
    3.tar.gz






    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Nov 27 '18 at 17:03









    Jeff Schaller

    38.7k1053125




    38.7k1053125








    • 6




      See also ls -b, ls -Q, ls --quoting-style=....
      – Stephen Kitt
      Nov 27 '18 at 17:10










    • And printf '%qn'. (Both GNU.)
      – dave_thompson_085
      Nov 29 '18 at 12:27














    • 6




      See also ls -b, ls -Q, ls --quoting-style=....
      – Stephen Kitt
      Nov 27 '18 at 17:10










    • And printf '%qn'. (Both GNU.)
      – dave_thompson_085
      Nov 29 '18 at 12:27








    6




    6




    See also ls -b, ls -Q, ls --quoting-style=....
    – Stephen Kitt
    Nov 27 '18 at 17:10




    See also ls -b, ls -Q, ls --quoting-style=....
    – Stephen Kitt
    Nov 27 '18 at 17:10












    And printf '%qn'. (Both GNU.)
    – dave_thompson_085
    Nov 29 '18 at 12:27




    And printf '%qn'. (Both GNU.)
    – dave_thompson_085
    Nov 29 '18 at 12:27











    9














    ls behaves differently when its output is piped. For example:



    ls          # outputs filenames in columns
    ls | cat # passes one filename per line to the cat command


    So if you want see all your *.tar.gz files, one per line, you can do this:



    ls *.tar.gz | cat


    But what if you don't want to pipe your output? That is, is there a way to force ls to output the filenames one to a line without piping the output?



    Yes, with the -1 switch. (That's a dash with the number 1.) So you can use these commands:



    ls -1             # shows all (non-hidden) files, one per line
    ls -1 *.tar.gz # shows only *.tar.gz files, one per line





    share|improve this answer




























      9














      ls behaves differently when its output is piped. For example:



      ls          # outputs filenames in columns
      ls | cat # passes one filename per line to the cat command


      So if you want see all your *.tar.gz files, one per line, you can do this:



      ls *.tar.gz | cat


      But what if you don't want to pipe your output? That is, is there a way to force ls to output the filenames one to a line without piping the output?



      Yes, with the -1 switch. (That's a dash with the number 1.) So you can use these commands:



      ls -1             # shows all (non-hidden) files, one per line
      ls -1 *.tar.gz # shows only *.tar.gz files, one per line





      share|improve this answer


























        9












        9








        9






        ls behaves differently when its output is piped. For example:



        ls          # outputs filenames in columns
        ls | cat # passes one filename per line to the cat command


        So if you want see all your *.tar.gz files, one per line, you can do this:



        ls *.tar.gz | cat


        But what if you don't want to pipe your output? That is, is there a way to force ls to output the filenames one to a line without piping the output?



        Yes, with the -1 switch. (That's a dash with the number 1.) So you can use these commands:



        ls -1             # shows all (non-hidden) files, one per line
        ls -1 *.tar.gz # shows only *.tar.gz files, one per line





        share|improve this answer














        ls behaves differently when its output is piped. For example:



        ls          # outputs filenames in columns
        ls | cat # passes one filename per line to the cat command


        So if you want see all your *.tar.gz files, one per line, you can do this:



        ls *.tar.gz | cat


        But what if you don't want to pipe your output? That is, is there a way to force ls to output the filenames one to a line without piping the output?



        Yes, with the -1 switch. (That's a dash with the number 1.) So you can use these commands:



        ls -1             # shows all (non-hidden) files, one per line
        ls -1 *.tar.gz # shows only *.tar.gz files, one per line






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 27 '18 at 23:00

























        answered Nov 27 '18 at 22:47









        J-L

        1913




        1913























            7














            Or with GNU find:



            find  -name "*.tar.gz"  -printf '%Pn'


            In contrary to ls with * it will search for .tar.gz files recursively:



            $ find  -name "*.tar.gz"  -printf '%Pn'
            file1.tar.gz
            dir/file3.tar.gz
            file2.tar.gz





            share|improve this answer





















            • Why -printf '%Pn' rather than just -print - at which point any Posix compatible find will work.
              – Martin Bonner
              Nov 29 '18 at 14:18










            • @MartinBonner because -print will add ./ before the filename.
              – Arkadiusz Drabczyk
              Nov 29 '18 at 14:59
















            7














            Or with GNU find:



            find  -name "*.tar.gz"  -printf '%Pn'


            In contrary to ls with * it will search for .tar.gz files recursively:



            $ find  -name "*.tar.gz"  -printf '%Pn'
            file1.tar.gz
            dir/file3.tar.gz
            file2.tar.gz





            share|improve this answer





















            • Why -printf '%Pn' rather than just -print - at which point any Posix compatible find will work.
              – Martin Bonner
              Nov 29 '18 at 14:18










            • @MartinBonner because -print will add ./ before the filename.
              – Arkadiusz Drabczyk
              Nov 29 '18 at 14:59














            7












            7








            7






            Or with GNU find:



            find  -name "*.tar.gz"  -printf '%Pn'


            In contrary to ls with * it will search for .tar.gz files recursively:



            $ find  -name "*.tar.gz"  -printf '%Pn'
            file1.tar.gz
            dir/file3.tar.gz
            file2.tar.gz





            share|improve this answer












            Or with GNU find:



            find  -name "*.tar.gz"  -printf '%Pn'


            In contrary to ls with * it will search for .tar.gz files recursively:



            $ find  -name "*.tar.gz"  -printf '%Pn'
            file1.tar.gz
            dir/file3.tar.gz
            file2.tar.gz






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 27 '18 at 21:01









            Arkadiusz Drabczyk

            7,83521734




            7,83521734












            • Why -printf '%Pn' rather than just -print - at which point any Posix compatible find will work.
              – Martin Bonner
              Nov 29 '18 at 14:18










            • @MartinBonner because -print will add ./ before the filename.
              – Arkadiusz Drabczyk
              Nov 29 '18 at 14:59


















            • Why -printf '%Pn' rather than just -print - at which point any Posix compatible find will work.
              – Martin Bonner
              Nov 29 '18 at 14:18










            • @MartinBonner because -print will add ./ before the filename.
              – Arkadiusz Drabczyk
              Nov 29 '18 at 14:59
















            Why -printf '%Pn' rather than just -print - at which point any Posix compatible find will work.
            – Martin Bonner
            Nov 29 '18 at 14:18




            Why -printf '%Pn' rather than just -print - at which point any Posix compatible find will work.
            – Martin Bonner
            Nov 29 '18 at 14:18












            @MartinBonner because -print will add ./ before the filename.
            – Arkadiusz Drabczyk
            Nov 29 '18 at 14:59




            @MartinBonner because -print will add ./ before the filename.
            – Arkadiusz Drabczyk
            Nov 29 '18 at 14:59











            4














            A slightly more roundabout and loopy way:



            for i in *.tar.gz; do
            echo "$i"
            done


            EDIT: added quotes to handle weird filenames






            share|improve this answer



















            • 5




              touch -- '-e a.tar.gz' for a reason to quote your variables and unix.stackexchange.com/q/65803/117549 for reasons to use printf instead of echo
              – Jeff Schaller
              Nov 27 '18 at 20:49










            • oof, I just spent 5 minutes trying to figure out how to remove the resulting -e a.tar.gz file
              – snetch
              Nov 27 '18 at 20:57






            • 3




              sorry! rm -- '-e a.tar.gz' should do the trick
              – Jeff Schaller
              Nov 27 '18 at 21:01










            • You're good, it was a lesson, and I did learn that -- works for rm and a lot of others.
              – snetch
              Nov 27 '18 at 21:02










            • Thank you for that. It wouldn't be a complete question if someone didn't suggest a for-do loop to solve the problem. lol Upvoting.
              – Jesse Steele
              Nov 29 '18 at 0:02
















            4














            A slightly more roundabout and loopy way:



            for i in *.tar.gz; do
            echo "$i"
            done


            EDIT: added quotes to handle weird filenames






            share|improve this answer



















            • 5




              touch -- '-e a.tar.gz' for a reason to quote your variables and unix.stackexchange.com/q/65803/117549 for reasons to use printf instead of echo
              – Jeff Schaller
              Nov 27 '18 at 20:49










            • oof, I just spent 5 minutes trying to figure out how to remove the resulting -e a.tar.gz file
              – snetch
              Nov 27 '18 at 20:57






            • 3




              sorry! rm -- '-e a.tar.gz' should do the trick
              – Jeff Schaller
              Nov 27 '18 at 21:01










            • You're good, it was a lesson, and I did learn that -- works for rm and a lot of others.
              – snetch
              Nov 27 '18 at 21:02










            • Thank you for that. It wouldn't be a complete question if someone didn't suggest a for-do loop to solve the problem. lol Upvoting.
              – Jesse Steele
              Nov 29 '18 at 0:02














            4












            4








            4






            A slightly more roundabout and loopy way:



            for i in *.tar.gz; do
            echo "$i"
            done


            EDIT: added quotes to handle weird filenames






            share|improve this answer














            A slightly more roundabout and loopy way:



            for i in *.tar.gz; do
            echo "$i"
            done


            EDIT: added quotes to handle weird filenames







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Nov 27 '18 at 21:04

























            answered Nov 27 '18 at 20:38









            snetch

            16719




            16719








            • 5




              touch -- '-e a.tar.gz' for a reason to quote your variables and unix.stackexchange.com/q/65803/117549 for reasons to use printf instead of echo
              – Jeff Schaller
              Nov 27 '18 at 20:49










            • oof, I just spent 5 minutes trying to figure out how to remove the resulting -e a.tar.gz file
              – snetch
              Nov 27 '18 at 20:57






            • 3




              sorry! rm -- '-e a.tar.gz' should do the trick
              – Jeff Schaller
              Nov 27 '18 at 21:01










            • You're good, it was a lesson, and I did learn that -- works for rm and a lot of others.
              – snetch
              Nov 27 '18 at 21:02










            • Thank you for that. It wouldn't be a complete question if someone didn't suggest a for-do loop to solve the problem. lol Upvoting.
              – Jesse Steele
              Nov 29 '18 at 0:02














            • 5




              touch -- '-e a.tar.gz' for a reason to quote your variables and unix.stackexchange.com/q/65803/117549 for reasons to use printf instead of echo
              – Jeff Schaller
              Nov 27 '18 at 20:49










            • oof, I just spent 5 minutes trying to figure out how to remove the resulting -e a.tar.gz file
              – snetch
              Nov 27 '18 at 20:57






            • 3




              sorry! rm -- '-e a.tar.gz' should do the trick
              – Jeff Schaller
              Nov 27 '18 at 21:01










            • You're good, it was a lesson, and I did learn that -- works for rm and a lot of others.
              – snetch
              Nov 27 '18 at 21:02










            • Thank you for that. It wouldn't be a complete question if someone didn't suggest a for-do loop to solve the problem. lol Upvoting.
              – Jesse Steele
              Nov 29 '18 at 0:02








            5




            5




            touch -- '-e a.tar.gz' for a reason to quote your variables and unix.stackexchange.com/q/65803/117549 for reasons to use printf instead of echo
            – Jeff Schaller
            Nov 27 '18 at 20:49




            touch -- '-e a.tar.gz' for a reason to quote your variables and unix.stackexchange.com/q/65803/117549 for reasons to use printf instead of echo
            – Jeff Schaller
            Nov 27 '18 at 20:49












            oof, I just spent 5 minutes trying to figure out how to remove the resulting -e a.tar.gz file
            – snetch
            Nov 27 '18 at 20:57




            oof, I just spent 5 minutes trying to figure out how to remove the resulting -e a.tar.gz file
            – snetch
            Nov 27 '18 at 20:57




            3




            3




            sorry! rm -- '-e a.tar.gz' should do the trick
            – Jeff Schaller
            Nov 27 '18 at 21:01




            sorry! rm -- '-e a.tar.gz' should do the trick
            – Jeff Schaller
            Nov 27 '18 at 21:01












            You're good, it was a lesson, and I did learn that -- works for rm and a lot of others.
            – snetch
            Nov 27 '18 at 21:02




            You're good, it was a lesson, and I did learn that -- works for rm and a lot of others.
            – snetch
            Nov 27 '18 at 21:02












            Thank you for that. It wouldn't be a complete question if someone didn't suggest a for-do loop to solve the problem. lol Upvoting.
            – Jesse Steele
            Nov 29 '18 at 0:02




            Thank you for that. It wouldn't be a complete question if someone didn't suggest a for-do loop to solve the problem. lol Upvoting.
            – Jesse Steele
            Nov 29 '18 at 0:02


















            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.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • 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%2f484481%2fhow-to-list-tar-gz-one-filename-per-line%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

            Probability when a professor distributes a quiz and homework assignment to a class of n students.

            Aardman Animations

            Are they similar matrix