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

Clash 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.
shell-script scripting zip recursive
add a comment |Â
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.
shell-script scripting zip recursive
3
Possible duplicate of command to zip multiple directories into individual zip files
â Jeff Schaller
Jul 5 at 14:04
add a comment |Â
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.
shell-script scripting zip recursive
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.
shell-script scripting zip recursive
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
add a comment |Â
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
add a comment |Â
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
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
add a comment |Â
up vote
0
down vote
Try,
$ zip -R parent_directory '*.txt'
add a comment |Â
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
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
add a comment |Â
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
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
add a comment |Â
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
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
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
add a comment |Â
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
add a comment |Â
up vote
0
down vote
Try,
$ zip -R parent_directory '*.txt'
add a comment |Â
up vote
0
down vote
Try,
$ zip -R parent_directory '*.txt'
add a comment |Â
up vote
0
down vote
up vote
0
down vote
Try,
$ zip -R parent_directory '*.txt'
Try,
$ zip -R parent_directory '*.txt'
edited Jul 5 at 13:58
slmâ¦
233k65479651
233k65479651
answered Jul 5 at 13:52
SivaPrasath
3,69811636
3,69811636
add a comment |Â
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
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
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
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
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
3
Possible duplicate of command to zip multiple directories into individual zip files
â Jeff Schaller
Jul 5 at 14:04