zip files within all sub-directories of a given parent directory

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
0
down vote

favorite












Say I have a parent_directory/ with the following sub-directories child1/, child2/ and child3/.



How do I script to zip all *.txt files in childx/ into childx.zip
I also want this childx.zip to be located in its childx/ directory.







share|improve this question

















  • 3




    Possible duplicate of command to zip multiple directories into individual zip files
    – Jeff Schaller
    Jul 5 at 14:04














up vote
0
down vote

favorite












Say I have a parent_directory/ with the following sub-directories child1/, child2/ and child3/.



How do I script to zip all *.txt files in childx/ into childx.zip
I also want this childx.zip to be located in its childx/ directory.







share|improve this question

















  • 3




    Possible duplicate of command to zip multiple directories into individual zip files
    – Jeff Schaller
    Jul 5 at 14:04












up vote
0
down vote

favorite









up vote
0
down vote

favorite











Say I have a parent_directory/ with the following sub-directories child1/, child2/ and child3/.



How do I script to zip all *.txt files in childx/ into childx.zip
I also want this childx.zip to be located in its childx/ directory.







share|improve this question













Say I have a parent_directory/ with the following sub-directories child1/, child2/ and child3/.



How do I script to zip all *.txt files in childx/ into childx.zip
I also want this childx.zip to be located in its childx/ directory.









share|improve this question












share|improve this question




share|improve this question








edited Jul 5 at 20:46









slm♦

233k65479651




233k65479651









asked Jul 5 at 13:45









Tejas

62




62







  • 3




    Possible duplicate of command to zip multiple directories into individual zip files
    – Jeff Schaller
    Jul 5 at 14:04












  • 3




    Possible duplicate of command to zip multiple directories into individual zip files
    – Jeff Schaller
    Jul 5 at 14:04







3




3




Possible duplicate of command to zip multiple directories into individual zip files
– Jeff Schaller
Jul 5 at 14:04




Possible duplicate of command to zip multiple directories into individual zip files
– Jeff Schaller
Jul 5 at 14:04










2 Answers
2






active

oldest

votes

















up vote
0
down vote



accepted










Sample data



$ mkdir -p parent_directory/child1..3
$ touch parent_directory/child1..3/file1.txt
$ touch parent_directory/child1..3/file2.txt

$ tree parent_directory/
parent_directory/
├── child1
│   ├── file1.txt
│   └── file2.txt
├── child2
│   ├── file1.txt
│   └── file2.txt
└── child3
├── file1.txt
└── file2.txt

3 directories, 6 files


Solution



Now to script the zip files:



$ cd parent_directory/; for i in *; do find $i -name "*.txt" -print | zip $i.zip -@; mv $i.zip $i; done; cd -
adding: child1/file2.txt (stored 0%)
adding: child1/file1.txt (stored 0%)
adding: child2/file2.txt (stored 0%)
adding: child2/file1.txt (stored 0%)
adding: child3/file2.txt (stored 0%)
adding: child3/file1.txt (stored 0%)


Results



And the results:



$ tree parent_directory/
parent_directory/
├── child1
│   ├── child1.zip
│   ├── file1.txt
│   └── file2.txt
├── child2
│   ├── child2.zip
│   ├── file1.txt
│   └── file2.txt
└── child3
├── child3.zip
├── file1.txt
└── file2.txt

3 directories, 9 files

$ unzip -l parent_directory/child1/child1.zip
Archive: parent_directory/child1/child1.zip
Length Date Time Name
--------- ---------- ----- ----
0 07-05-2018 10:08 child1/file2.txt
0 07-05-2018 10:08 child1/file1.txt
--------- -------
0 2 files
$ unzip -l parent_directory/child2/child2.zip
Archive: parent_directory/child2/child2.zip
Length Date Time Name
--------- ---------- ----- ----
0 07-05-2018 10:08 child2/file2.txt
0 07-05-2018 10:08 child2/file1.txt
--------- -------
0 2 files
$ unzip -l parent_directory/child3/child3.zip
Archive: parent_directory/child3/child3.zip
Length Date Time Name
--------- ---------- ----- ----
0 07-05-2018 10:08 child3/file2.txt
0 07-05-2018 10:08 child3/file1.txt
--------- -------
0 2 files


References



  • https://linux.die.net/man/1/zip





share|improve this answer





















  • follow-up question: child1/ has additional sub-directories (and these might have sub-directories too), and I'd like the script to do the same on these sub-directories as well, recursively. Would a simple -r do it? and where would I place it in the command?
    – Tejas
    Jul 5 at 14:27


















up vote
0
down vote













Try,



$ zip -R parent_directory '*.txt'





share|improve this answer























    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',
    convertImagesToLinks: false,
    noModals: false,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    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%2f453633%2fzip-files-within-all-sub-directories-of-a-given-parent-directory%23new-answer', 'question_page');

    );

    Post as a guest






























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote



    accepted










    Sample data



    $ mkdir -p parent_directory/child1..3
    $ touch parent_directory/child1..3/file1.txt
    $ touch parent_directory/child1..3/file2.txt

    $ tree parent_directory/
    parent_directory/
    ├── child1
    │   ├── file1.txt
    │   └── file2.txt
    ├── child2
    │   ├── file1.txt
    │   └── file2.txt
    └── child3
    ├── file1.txt
    └── file2.txt

    3 directories, 6 files


    Solution



    Now to script the zip files:



    $ cd parent_directory/; for i in *; do find $i -name "*.txt" -print | zip $i.zip -@; mv $i.zip $i; done; cd -
    adding: child1/file2.txt (stored 0%)
    adding: child1/file1.txt (stored 0%)
    adding: child2/file2.txt (stored 0%)
    adding: child2/file1.txt (stored 0%)
    adding: child3/file2.txt (stored 0%)
    adding: child3/file1.txt (stored 0%)


    Results



    And the results:



    $ tree parent_directory/
    parent_directory/
    ├── child1
    │   ├── child1.zip
    │   ├── file1.txt
    │   └── file2.txt
    ├── child2
    │   ├── child2.zip
    │   ├── file1.txt
    │   └── file2.txt
    └── child3
    ├── child3.zip
    ├── file1.txt
    └── file2.txt

    3 directories, 9 files

    $ unzip -l parent_directory/child1/child1.zip
    Archive: parent_directory/child1/child1.zip
    Length Date Time Name
    --------- ---------- ----- ----
    0 07-05-2018 10:08 child1/file2.txt
    0 07-05-2018 10:08 child1/file1.txt
    --------- -------
    0 2 files
    $ unzip -l parent_directory/child2/child2.zip
    Archive: parent_directory/child2/child2.zip
    Length Date Time Name
    --------- ---------- ----- ----
    0 07-05-2018 10:08 child2/file2.txt
    0 07-05-2018 10:08 child2/file1.txt
    --------- -------
    0 2 files
    $ unzip -l parent_directory/child3/child3.zip
    Archive: parent_directory/child3/child3.zip
    Length Date Time Name
    --------- ---------- ----- ----
    0 07-05-2018 10:08 child3/file2.txt
    0 07-05-2018 10:08 child3/file1.txt
    --------- -------
    0 2 files


    References



    • https://linux.die.net/man/1/zip





    share|improve this answer





















    • follow-up question: child1/ has additional sub-directories (and these might have sub-directories too), and I'd like the script to do the same on these sub-directories as well, recursively. Would a simple -r do it? and where would I place it in the command?
      – Tejas
      Jul 5 at 14:27















    up vote
    0
    down vote



    accepted










    Sample data



    $ mkdir -p parent_directory/child1..3
    $ touch parent_directory/child1..3/file1.txt
    $ touch parent_directory/child1..3/file2.txt

    $ tree parent_directory/
    parent_directory/
    ├── child1
    │   ├── file1.txt
    │   └── file2.txt
    ├── child2
    │   ├── file1.txt
    │   └── file2.txt
    └── child3
    ├── file1.txt
    └── file2.txt

    3 directories, 6 files


    Solution



    Now to script the zip files:



    $ cd parent_directory/; for i in *; do find $i -name "*.txt" -print | zip $i.zip -@; mv $i.zip $i; done; cd -
    adding: child1/file2.txt (stored 0%)
    adding: child1/file1.txt (stored 0%)
    adding: child2/file2.txt (stored 0%)
    adding: child2/file1.txt (stored 0%)
    adding: child3/file2.txt (stored 0%)
    adding: child3/file1.txt (stored 0%)


    Results



    And the results:



    $ tree parent_directory/
    parent_directory/
    ├── child1
    │   ├── child1.zip
    │   ├── file1.txt
    │   └── file2.txt
    ├── child2
    │   ├── child2.zip
    │   ├── file1.txt
    │   └── file2.txt
    └── child3
    ├── child3.zip
    ├── file1.txt
    └── file2.txt

    3 directories, 9 files

    $ unzip -l parent_directory/child1/child1.zip
    Archive: parent_directory/child1/child1.zip
    Length Date Time Name
    --------- ---------- ----- ----
    0 07-05-2018 10:08 child1/file2.txt
    0 07-05-2018 10:08 child1/file1.txt
    --------- -------
    0 2 files
    $ unzip -l parent_directory/child2/child2.zip
    Archive: parent_directory/child2/child2.zip
    Length Date Time Name
    --------- ---------- ----- ----
    0 07-05-2018 10:08 child2/file2.txt
    0 07-05-2018 10:08 child2/file1.txt
    --------- -------
    0 2 files
    $ unzip -l parent_directory/child3/child3.zip
    Archive: parent_directory/child3/child3.zip
    Length Date Time Name
    --------- ---------- ----- ----
    0 07-05-2018 10:08 child3/file2.txt
    0 07-05-2018 10:08 child3/file1.txt
    --------- -------
    0 2 files


    References



    • https://linux.die.net/man/1/zip





    share|improve this answer





















    • follow-up question: child1/ has additional sub-directories (and these might have sub-directories too), and I'd like the script to do the same on these sub-directories as well, recursively. Would a simple -r do it? and where would I place it in the command?
      – Tejas
      Jul 5 at 14:27













    up vote
    0
    down vote



    accepted







    up vote
    0
    down vote



    accepted






    Sample data



    $ mkdir -p parent_directory/child1..3
    $ touch parent_directory/child1..3/file1.txt
    $ touch parent_directory/child1..3/file2.txt

    $ tree parent_directory/
    parent_directory/
    ├── child1
    │   ├── file1.txt
    │   └── file2.txt
    ├── child2
    │   ├── file1.txt
    │   └── file2.txt
    └── child3
    ├── file1.txt
    └── file2.txt

    3 directories, 6 files


    Solution



    Now to script the zip files:



    $ cd parent_directory/; for i in *; do find $i -name "*.txt" -print | zip $i.zip -@; mv $i.zip $i; done; cd -
    adding: child1/file2.txt (stored 0%)
    adding: child1/file1.txt (stored 0%)
    adding: child2/file2.txt (stored 0%)
    adding: child2/file1.txt (stored 0%)
    adding: child3/file2.txt (stored 0%)
    adding: child3/file1.txt (stored 0%)


    Results



    And the results:



    $ tree parent_directory/
    parent_directory/
    ├── child1
    │   ├── child1.zip
    │   ├── file1.txt
    │   └── file2.txt
    ├── child2
    │   ├── child2.zip
    │   ├── file1.txt
    │   └── file2.txt
    └── child3
    ├── child3.zip
    ├── file1.txt
    └── file2.txt

    3 directories, 9 files

    $ unzip -l parent_directory/child1/child1.zip
    Archive: parent_directory/child1/child1.zip
    Length Date Time Name
    --------- ---------- ----- ----
    0 07-05-2018 10:08 child1/file2.txt
    0 07-05-2018 10:08 child1/file1.txt
    --------- -------
    0 2 files
    $ unzip -l parent_directory/child2/child2.zip
    Archive: parent_directory/child2/child2.zip
    Length Date Time Name
    --------- ---------- ----- ----
    0 07-05-2018 10:08 child2/file2.txt
    0 07-05-2018 10:08 child2/file1.txt
    --------- -------
    0 2 files
    $ unzip -l parent_directory/child3/child3.zip
    Archive: parent_directory/child3/child3.zip
    Length Date Time Name
    --------- ---------- ----- ----
    0 07-05-2018 10:08 child3/file2.txt
    0 07-05-2018 10:08 child3/file1.txt
    --------- -------
    0 2 files


    References



    • https://linux.die.net/man/1/zip





    share|improve this answer













    Sample data



    $ mkdir -p parent_directory/child1..3
    $ touch parent_directory/child1..3/file1.txt
    $ touch parent_directory/child1..3/file2.txt

    $ tree parent_directory/
    parent_directory/
    ├── child1
    │   ├── file1.txt
    │   └── file2.txt
    ├── child2
    │   ├── file1.txt
    │   └── file2.txt
    └── child3
    ├── file1.txt
    └── file2.txt

    3 directories, 6 files


    Solution



    Now to script the zip files:



    $ cd parent_directory/; for i in *; do find $i -name "*.txt" -print | zip $i.zip -@; mv $i.zip $i; done; cd -
    adding: child1/file2.txt (stored 0%)
    adding: child1/file1.txt (stored 0%)
    adding: child2/file2.txt (stored 0%)
    adding: child2/file1.txt (stored 0%)
    adding: child3/file2.txt (stored 0%)
    adding: child3/file1.txt (stored 0%)


    Results



    And the results:



    $ tree parent_directory/
    parent_directory/
    ├── child1
    │   ├── child1.zip
    │   ├── file1.txt
    │   └── file2.txt
    ├── child2
    │   ├── child2.zip
    │   ├── file1.txt
    │   └── file2.txt
    └── child3
    ├── child3.zip
    ├── file1.txt
    └── file2.txt

    3 directories, 9 files

    $ unzip -l parent_directory/child1/child1.zip
    Archive: parent_directory/child1/child1.zip
    Length Date Time Name
    --------- ---------- ----- ----
    0 07-05-2018 10:08 child1/file2.txt
    0 07-05-2018 10:08 child1/file1.txt
    --------- -------
    0 2 files
    $ unzip -l parent_directory/child2/child2.zip
    Archive: parent_directory/child2/child2.zip
    Length Date Time Name
    --------- ---------- ----- ----
    0 07-05-2018 10:08 child2/file2.txt
    0 07-05-2018 10:08 child2/file1.txt
    --------- -------
    0 2 files
    $ unzip -l parent_directory/child3/child3.zip
    Archive: parent_directory/child3/child3.zip
    Length Date Time Name
    --------- ---------- ----- ----
    0 07-05-2018 10:08 child3/file2.txt
    0 07-05-2018 10:08 child3/file1.txt
    --------- -------
    0 2 files


    References



    • https://linux.die.net/man/1/zip






    share|improve this answer













    share|improve this answer



    share|improve this answer











    answered Jul 5 at 14:14









    slm♦

    233k65479651




    233k65479651











    • follow-up question: child1/ has additional sub-directories (and these might have sub-directories too), and I'd like the script to do the same on these sub-directories as well, recursively. Would a simple -r do it? and where would I place it in the command?
      – Tejas
      Jul 5 at 14:27

















    • follow-up question: child1/ has additional sub-directories (and these might have sub-directories too), and I'd like the script to do the same on these sub-directories as well, recursively. Would a simple -r do it? and where would I place it in the command?
      – Tejas
      Jul 5 at 14:27
















    follow-up question: child1/ has additional sub-directories (and these might have sub-directories too), and I'd like the script to do the same on these sub-directories as well, recursively. Would a simple -r do it? and where would I place it in the command?
    – Tejas
    Jul 5 at 14:27





    follow-up question: child1/ has additional sub-directories (and these might have sub-directories too), and I'd like the script to do the same on these sub-directories as well, recursively. Would a simple -r do it? and where would I place it in the command?
    – Tejas
    Jul 5 at 14:27













    up vote
    0
    down vote













    Try,



    $ zip -R parent_directory '*.txt'





    share|improve this answer



























      up vote
      0
      down vote













      Try,



      $ zip -R parent_directory '*.txt'





      share|improve this answer

























        up vote
        0
        down vote










        up vote
        0
        down vote









        Try,



        $ zip -R parent_directory '*.txt'





        share|improve this answer















        Try,



        $ zip -R parent_directory '*.txt'






        share|improve this answer















        share|improve this answer



        share|improve this answer








        edited Jul 5 at 13:58









        slm♦

        233k65479651




        233k65479651











        answered Jul 5 at 13:52









        SivaPrasath

        3,69811636




        3,69811636






















             

            draft saved


            draft discarded


























             


            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f453633%2fzip-files-within-all-sub-directories-of-a-given-parent-directory%23new-answer', 'question_page');

            );

            Post as a guest













































































            Popular posts from this blog

            Peggy Mitchell

            Palaiologos

            The Forum (Inglewood, California)