loop to traverse subdirectories and execute a perl script into each subdirectory
I have a parent directory with multiples subdirectories like this
Parent_directory
subdirectory_1
perlscript.pl
file.fasta
subdirectory_2
perlscript.pl
file_2.fasta
And I would like to run the perl scipt in each subdirectory. I'm trying with the next command
find . -type d | while read d; do perl hoz-3-v1c.pl $d/* ; done
but the output is directed to the parent directory and I want the output in each subdirectory
shell
add a comment |
I have a parent directory with multiples subdirectories like this
Parent_directory
subdirectory_1
perlscript.pl
file.fasta
subdirectory_2
perlscript.pl
file_2.fasta
And I would like to run the perl scipt in each subdirectory. I'm trying with the next command
find . -type d | while read d; do perl hoz-3-v1c.pl $d/* ; done
but the output is directed to the parent directory and I want the output in each subdirectory
shell
Possible duplicate of How to use `find -exec` to execute command in directory of found file (not current directory)?
– roaima
2 hours ago
find /path/to/Parent_directory -type f -name '*.pl' -execdir perl ./"{}" . ;?
– DopeGhoti
2 hours ago
add a comment |
I have a parent directory with multiples subdirectories like this
Parent_directory
subdirectory_1
perlscript.pl
file.fasta
subdirectory_2
perlscript.pl
file_2.fasta
And I would like to run the perl scipt in each subdirectory. I'm trying with the next command
find . -type d | while read d; do perl hoz-3-v1c.pl $d/* ; done
but the output is directed to the parent directory and I want the output in each subdirectory
shell
I have a parent directory with multiples subdirectories like this
Parent_directory
subdirectory_1
perlscript.pl
file.fasta
subdirectory_2
perlscript.pl
file_2.fasta
And I would like to run the perl scipt in each subdirectory. I'm trying with the next command
find . -type d | while read d; do perl hoz-3-v1c.pl $d/* ; done
but the output is directed to the parent directory and I want the output in each subdirectory
shell
shell
edited 22 mins ago
mosvy
7,6421530
7,6421530
asked 2 hours ago
erick rodriguezerick rodriguez
111
111
Possible duplicate of How to use `find -exec` to execute command in directory of found file (not current directory)?
– roaima
2 hours ago
find /path/to/Parent_directory -type f -name '*.pl' -execdir perl ./"{}" . ;?
– DopeGhoti
2 hours ago
add a comment |
Possible duplicate of How to use `find -exec` to execute command in directory of found file (not current directory)?
– roaima
2 hours ago
find /path/to/Parent_directory -type f -name '*.pl' -execdir perl ./"{}" . ;?
– DopeGhoti
2 hours ago
Possible duplicate of How to use `find -exec` to execute command in directory of found file (not current directory)?
– roaima
2 hours ago
Possible duplicate of How to use `find -exec` to execute command in directory of found file (not current directory)?
– roaima
2 hours ago
find /path/to/Parent_directory -type f -name '*.pl' -execdir perl ./"{}" . ;?– DopeGhoti
2 hours ago
find /path/to/Parent_directory -type f -name '*.pl' -execdir perl ./"{}" . ;?– DopeGhoti
2 hours ago
add a comment |
1 Answer
1
active
oldest
votes
It looks like you don't have to bother with find at all in this instance.
for dirpath in Parent_directory/*/; do
( cd "$dirpath" && perl perlscript.pl *.fasta )
done
This assumes that the Perl script is always called perlscript.pl (as in your example directory layout) and that correct way to run your Perl script is
perl perlscript.pl *.fasta
In the loop above, the parentheses creates a subshell. This prevents the cd from affecting the rest of the script and we don't have to cd back out of the directory after running the Perl script.
The loop will iterate over all subdirectories of Parent_directory and execute the given commands for each.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f501970%2floop-to-traverse-subdirectories-and-execute-a-perl-script-into-each-subdirectory%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
It looks like you don't have to bother with find at all in this instance.
for dirpath in Parent_directory/*/; do
( cd "$dirpath" && perl perlscript.pl *.fasta )
done
This assumes that the Perl script is always called perlscript.pl (as in your example directory layout) and that correct way to run your Perl script is
perl perlscript.pl *.fasta
In the loop above, the parentheses creates a subshell. This prevents the cd from affecting the rest of the script and we don't have to cd back out of the directory after running the Perl script.
The loop will iterate over all subdirectories of Parent_directory and execute the given commands for each.
add a comment |
It looks like you don't have to bother with find at all in this instance.
for dirpath in Parent_directory/*/; do
( cd "$dirpath" && perl perlscript.pl *.fasta )
done
This assumes that the Perl script is always called perlscript.pl (as in your example directory layout) and that correct way to run your Perl script is
perl perlscript.pl *.fasta
In the loop above, the parentheses creates a subshell. This prevents the cd from affecting the rest of the script and we don't have to cd back out of the directory after running the Perl script.
The loop will iterate over all subdirectories of Parent_directory and execute the given commands for each.
add a comment |
It looks like you don't have to bother with find at all in this instance.
for dirpath in Parent_directory/*/; do
( cd "$dirpath" && perl perlscript.pl *.fasta )
done
This assumes that the Perl script is always called perlscript.pl (as in your example directory layout) and that correct way to run your Perl script is
perl perlscript.pl *.fasta
In the loop above, the parentheses creates a subshell. This prevents the cd from affecting the rest of the script and we don't have to cd back out of the directory after running the Perl script.
The loop will iterate over all subdirectories of Parent_directory and execute the given commands for each.
It looks like you don't have to bother with find at all in this instance.
for dirpath in Parent_directory/*/; do
( cd "$dirpath" && perl perlscript.pl *.fasta )
done
This assumes that the Perl script is always called perlscript.pl (as in your example directory layout) and that correct way to run your Perl script is
perl perlscript.pl *.fasta
In the loop above, the parentheses creates a subshell. This prevents the cd from affecting the rest of the script and we don't have to cd back out of the directory after running the Perl script.
The loop will iterate over all subdirectories of Parent_directory and execute the given commands for each.
answered 1 hour ago
KusalanandaKusalananda
131k17249409
131k17249409
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f501970%2floop-to-traverse-subdirectories-and-execute-a-perl-script-into-each-subdirectory%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Possible duplicate of How to use `find -exec` to execute command in directory of found file (not current directory)?
– roaima
2 hours ago
find /path/to/Parent_directory -type f -name '*.pl' -execdir perl ./"{}" . ;?– DopeGhoti
2 hours ago