Get extensions inside directory bash
Im trying to get all the extensions in the directory passed as $1 parameter.
The problem is that Im getting extensions that are not inside $1. I use cd command to get into the directory in the first line but it seems that it does not work.
cd $1
find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt
bash perl directory
add a comment |
Im trying to get all the extensions in the directory passed as $1 parameter.
The problem is that Im getting extensions that are not inside $1. I use cd command to get into the directory in the first line but it seems that it does not work.
cd $1
find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt
bash perl directory
See: Difference between single and double quotes in bash
– Cyrus
Nov 11 at 18:36
What exactly do you mean by "extension"? To avoid going into sub directories withfind
you could also use themaxdepth
option, e.g.:find . -maxdepth 1 -type f
– Håkon Hægland
Nov 11 at 19:05
Is thecd
performed in the same shell asfind
? Please provide a minimal directory structure and value for$1
that demonstrates the problem.
– ikegami
Nov 11 at 19:47
add a comment |
Im trying to get all the extensions in the directory passed as $1 parameter.
The problem is that Im getting extensions that are not inside $1. I use cd command to get into the directory in the first line but it seems that it does not work.
cd $1
find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt
bash perl directory
Im trying to get all the extensions in the directory passed as $1 parameter.
The problem is that Im getting extensions that are not inside $1. I use cd command to get into the directory in the first line but it seems that it does not work.
cd $1
find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt
bash perl directory
bash perl directory
edited Nov 11 at 18:37
Cyrus
45.2k43676
45.2k43676
asked Nov 11 at 18:31
user10599105
82
82
See: Difference between single and double quotes in bash
– Cyrus
Nov 11 at 18:36
What exactly do you mean by "extension"? To avoid going into sub directories withfind
you could also use themaxdepth
option, e.g.:find . -maxdepth 1 -type f
– Håkon Hægland
Nov 11 at 19:05
Is thecd
performed in the same shell asfind
? Please provide a minimal directory structure and value for$1
that demonstrates the problem.
– ikegami
Nov 11 at 19:47
add a comment |
See: Difference between single and double quotes in bash
– Cyrus
Nov 11 at 18:36
What exactly do you mean by "extension"? To avoid going into sub directories withfind
you could also use themaxdepth
option, e.g.:find . -maxdepth 1 -type f
– Håkon Hægland
Nov 11 at 19:05
Is thecd
performed in the same shell asfind
? Please provide a minimal directory structure and value for$1
that demonstrates the problem.
– ikegami
Nov 11 at 19:47
See: Difference between single and double quotes in bash
– Cyrus
Nov 11 at 18:36
See: Difference between single and double quotes in bash
– Cyrus
Nov 11 at 18:36
What exactly do you mean by "extension"? To avoid going into sub directories with
find
you could also use the maxdepth
option, e.g.: find . -maxdepth 1 -type f
– Håkon Hægland
Nov 11 at 19:05
What exactly do you mean by "extension"? To avoid going into sub directories with
find
you could also use the maxdepth
option, e.g.: find . -maxdepth 1 -type f
– Håkon Hægland
Nov 11 at 19:05
Is the
cd
performed in the same shell as find
? Please provide a minimal directory structure and value for $1
that demonstrates the problem.– ikegami
Nov 11 at 19:47
Is the
cd
performed in the same shell as find
? Please provide a minimal directory structure and value for $1
that demonstrates the problem.– ikegami
Nov 11 at 19:47
add a comment |
2 Answers
2
active
oldest
votes
You could try the following Perl command:
perl -MList::Util=uniq -sE '
chdir $dir; say for uniq map /.([^./]+)$/ ? $1 : () grep -f, <*>;
' -- -dir="$1" > "$1"-extensions.txt
add a comment |
There's obviously something you're not saying, because there's no bug in find
that will list files outside of the specified directory, and there's no bug in your Perl program that will invent extensions.
$ find
.
./foo
./foo/a.good
./a.bad
./script
$ cat ./script
#!/bin/bash
cd $1
find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt
$ ./script foo
$ cat foo/fooextensions.txt
good
txt <-- From the output file you created inside the directory in which you search.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
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: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
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%2fstackoverflow.com%2fquestions%2f53251859%2fget-extensions-inside-directory-bash%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
You could try the following Perl command:
perl -MList::Util=uniq -sE '
chdir $dir; say for uniq map /.([^./]+)$/ ? $1 : () grep -f, <*>;
' -- -dir="$1" > "$1"-extensions.txt
add a comment |
You could try the following Perl command:
perl -MList::Util=uniq -sE '
chdir $dir; say for uniq map /.([^./]+)$/ ? $1 : () grep -f, <*>;
' -- -dir="$1" > "$1"-extensions.txt
add a comment |
You could try the following Perl command:
perl -MList::Util=uniq -sE '
chdir $dir; say for uniq map /.([^./]+)$/ ? $1 : () grep -f, <*>;
' -- -dir="$1" > "$1"-extensions.txt
You could try the following Perl command:
perl -MList::Util=uniq -sE '
chdir $dir; say for uniq map /.([^./]+)$/ ? $1 : () grep -f, <*>;
' -- -dir="$1" > "$1"-extensions.txt
answered Nov 11 at 19:26
Håkon Hægland
14.9k124287
14.9k124287
add a comment |
add a comment |
There's obviously something you're not saying, because there's no bug in find
that will list files outside of the specified directory, and there's no bug in your Perl program that will invent extensions.
$ find
.
./foo
./foo/a.good
./a.bad
./script
$ cat ./script
#!/bin/bash
cd $1
find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt
$ ./script foo
$ cat foo/fooextensions.txt
good
txt <-- From the output file you created inside the directory in which you search.
add a comment |
There's obviously something you're not saying, because there's no bug in find
that will list files outside of the specified directory, and there's no bug in your Perl program that will invent extensions.
$ find
.
./foo
./foo/a.good
./a.bad
./script
$ cat ./script
#!/bin/bash
cd $1
find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt
$ ./script foo
$ cat foo/fooextensions.txt
good
txt <-- From the output file you created inside the directory in which you search.
add a comment |
There's obviously something you're not saying, because there's no bug in find
that will list files outside of the specified directory, and there's no bug in your Perl program that will invent extensions.
$ find
.
./foo
./foo/a.good
./a.bad
./script
$ cat ./script
#!/bin/bash
cd $1
find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt
$ ./script foo
$ cat foo/fooextensions.txt
good
txt <-- From the output file you created inside the directory in which you search.
There's obviously something you're not saying, because there's no bug in find
that will list files outside of the specified directory, and there's no bug in your Perl program that will invent extensions.
$ find
.
./foo
./foo/a.good
./a.bad
./script
$ cat ./script
#!/bin/bash
cd $1
find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt
$ ./script foo
$ cat foo/fooextensions.txt
good
txt <-- From the output file you created inside the directory in which you search.
edited Nov 12 at 4:21
answered Nov 11 at 19:54
ikegami
261k11176396
261k11176396
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- 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.
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%2fstackoverflow.com%2fquestions%2f53251859%2fget-extensions-inside-directory-bash%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
See: Difference between single and double quotes in bash
– Cyrus
Nov 11 at 18:36
What exactly do you mean by "extension"? To avoid going into sub directories with
find
you could also use themaxdepth
option, e.g.:find . -maxdepth 1 -type f
– Håkon Hægland
Nov 11 at 19:05
Is the
cd
performed in the same shell asfind
? Please provide a minimal directory structure and value for$1
that demonstrates the problem.– ikegami
Nov 11 at 19:47