List files recursively on OSX?
Clash Royale CLAN TAG#URR8PPP
up vote
1
down vote
favorite
I want to find all PDF files in a directory and its subdirectories, on OSX.
I know there are some PDFs in subdirectories, because e.g. this produces lots of results:
ls myfolder/pdfs/*.pdf
All my Googling suggests I want ls -R
, but this produces no results:
ls -R *.pdf
What am I doing wrong?
I can find some results this way:
ls -R | grep pdf
But I can't see this full paths to the files, which isn't very helpful.
osx ls
add a comment |Â
up vote
1
down vote
favorite
I want to find all PDF files in a directory and its subdirectories, on OSX.
I know there are some PDFs in subdirectories, because e.g. this produces lots of results:
ls myfolder/pdfs/*.pdf
All my Googling suggests I want ls -R
, but this produces no results:
ls -R *.pdf
What am I doing wrong?
I can find some results this way:
ls -R | grep pdf
But I can't see this full paths to the files, which isn't very helpful.
osx ls
You want to usefind
rather.
â Ralph Rönnquist
Mar 24 at 11:31
add a comment |Â
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I want to find all PDF files in a directory and its subdirectories, on OSX.
I know there are some PDFs in subdirectories, because e.g. this produces lots of results:
ls myfolder/pdfs/*.pdf
All my Googling suggests I want ls -R
, but this produces no results:
ls -R *.pdf
What am I doing wrong?
I can find some results this way:
ls -R | grep pdf
But I can't see this full paths to the files, which isn't very helpful.
osx ls
I want to find all PDF files in a directory and its subdirectories, on OSX.
I know there are some PDFs in subdirectories, because e.g. this produces lots of results:
ls myfolder/pdfs/*.pdf
All my Googling suggests I want ls -R
, but this produces no results:
ls -R *.pdf
What am I doing wrong?
I can find some results this way:
ls -R | grep pdf
But I can't see this full paths to the files, which isn't very helpful.
osx ls
asked Mar 24 at 11:29
Richard
623189
623189
You want to usefind
rather.
â Ralph Rönnquist
Mar 24 at 11:31
add a comment |Â
You want to usefind
rather.
â Ralph Rönnquist
Mar 24 at 11:31
You want to use
find
rather.â Ralph Rönnquist
Mar 24 at 11:31
You want to use
find
rather.â Ralph Rönnquist
Mar 24 at 11:31
add a comment |Â
3 Answers
3
active
oldest
votes
up vote
0
down vote
accepted
ls -R *.pdf
would invoke ls
recursively on anything matching *.pdf
(if there's nothing matching *.pdf
in the current directory, you'll get no result, and if there is, it will only recurse into it if it's a directory). ls -R | grep pdf
would show you everything in the ls -R
result that matches the regular expression pdf
, which is not what you want.
This is what you need:
find myfolder -type f -name '*.pdf'
This will give you the pathnames of all regular files (-type f
) in or below the myfolder
directory whose filenames matches the pattern *.pdf
. The pattern needs to be quoted to protect it from the shell.
add a comment |Â
up vote
2
down vote
On the native bash
shell you have on macOS
Terminal, enable an extended glob option globstar
to enable recursive glob match on nested sub-directories.
shopt -s globstar nullglob
ls **/*.pdf
The nullglob
prevents filename patterns which match no files to expand to a null string, rather than themselves. With globstar
, the pattern **
used in a filename expansion context will match all files and zero or more directories and sub-directories.
To be a bit safe by avoiding setting the shell options on the current shell, you can set it in sub-shell instead
( shopt -s globstar nullglob; ls **/*.pdf )
add a comment |Â
up vote
0
down vote
try
find . -name *.pdf -print
this should list pdf like
myfolder/foo/doc1.pdf
myfolder/bar/foo/doc2.pdf
note that *
in *.pdf
must be escaped if there is a pdf in starting directory.
add a comment |Â
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
ls -R *.pdf
would invoke ls
recursively on anything matching *.pdf
(if there's nothing matching *.pdf
in the current directory, you'll get no result, and if there is, it will only recurse into it if it's a directory). ls -R | grep pdf
would show you everything in the ls -R
result that matches the regular expression pdf
, which is not what you want.
This is what you need:
find myfolder -type f -name '*.pdf'
This will give you the pathnames of all regular files (-type f
) in or below the myfolder
directory whose filenames matches the pattern *.pdf
. The pattern needs to be quoted to protect it from the shell.
add a comment |Â
up vote
0
down vote
accepted
ls -R *.pdf
would invoke ls
recursively on anything matching *.pdf
(if there's nothing matching *.pdf
in the current directory, you'll get no result, and if there is, it will only recurse into it if it's a directory). ls -R | grep pdf
would show you everything in the ls -R
result that matches the regular expression pdf
, which is not what you want.
This is what you need:
find myfolder -type f -name '*.pdf'
This will give you the pathnames of all regular files (-type f
) in or below the myfolder
directory whose filenames matches the pattern *.pdf
. The pattern needs to be quoted to protect it from the shell.
add a comment |Â
up vote
0
down vote
accepted
up vote
0
down vote
accepted
ls -R *.pdf
would invoke ls
recursively on anything matching *.pdf
(if there's nothing matching *.pdf
in the current directory, you'll get no result, and if there is, it will only recurse into it if it's a directory). ls -R | grep pdf
would show you everything in the ls -R
result that matches the regular expression pdf
, which is not what you want.
This is what you need:
find myfolder -type f -name '*.pdf'
This will give you the pathnames of all regular files (-type f
) in or below the myfolder
directory whose filenames matches the pattern *.pdf
. The pattern needs to be quoted to protect it from the shell.
ls -R *.pdf
would invoke ls
recursively on anything matching *.pdf
(if there's nothing matching *.pdf
in the current directory, you'll get no result, and if there is, it will only recurse into it if it's a directory). ls -R | grep pdf
would show you everything in the ls -R
result that matches the regular expression pdf
, which is not what you want.
This is what you need:
find myfolder -type f -name '*.pdf'
This will give you the pathnames of all regular files (-type f
) in or below the myfolder
directory whose filenames matches the pattern *.pdf
. The pattern needs to be quoted to protect it from the shell.
answered Mar 24 at 11:34
Kusalananda
102k13201317
102k13201317
add a comment |Â
add a comment |Â
up vote
2
down vote
On the native bash
shell you have on macOS
Terminal, enable an extended glob option globstar
to enable recursive glob match on nested sub-directories.
shopt -s globstar nullglob
ls **/*.pdf
The nullglob
prevents filename patterns which match no files to expand to a null string, rather than themselves. With globstar
, the pattern **
used in a filename expansion context will match all files and zero or more directories and sub-directories.
To be a bit safe by avoiding setting the shell options on the current shell, you can set it in sub-shell instead
( shopt -s globstar nullglob; ls **/*.pdf )
add a comment |Â
up vote
2
down vote
On the native bash
shell you have on macOS
Terminal, enable an extended glob option globstar
to enable recursive glob match on nested sub-directories.
shopt -s globstar nullglob
ls **/*.pdf
The nullglob
prevents filename patterns which match no files to expand to a null string, rather than themselves. With globstar
, the pattern **
used in a filename expansion context will match all files and zero or more directories and sub-directories.
To be a bit safe by avoiding setting the shell options on the current shell, you can set it in sub-shell instead
( shopt -s globstar nullglob; ls **/*.pdf )
add a comment |Â
up vote
2
down vote
up vote
2
down vote
On the native bash
shell you have on macOS
Terminal, enable an extended glob option globstar
to enable recursive glob match on nested sub-directories.
shopt -s globstar nullglob
ls **/*.pdf
The nullglob
prevents filename patterns which match no files to expand to a null string, rather than themselves. With globstar
, the pattern **
used in a filename expansion context will match all files and zero or more directories and sub-directories.
To be a bit safe by avoiding setting the shell options on the current shell, you can set it in sub-shell instead
( shopt -s globstar nullglob; ls **/*.pdf )
On the native bash
shell you have on macOS
Terminal, enable an extended glob option globstar
to enable recursive glob match on nested sub-directories.
shopt -s globstar nullglob
ls **/*.pdf
The nullglob
prevents filename patterns which match no files to expand to a null string, rather than themselves. With globstar
, the pattern **
used in a filename expansion context will match all files and zero or more directories and sub-directories.
To be a bit safe by avoiding setting the shell options on the current shell, you can set it in sub-shell instead
( shopt -s globstar nullglob; ls **/*.pdf )
edited Mar 24 at 16:50
answered Mar 24 at 11:42
Inian
2,855722
2,855722
add a comment |Â
add a comment |Â
up vote
0
down vote
try
find . -name *.pdf -print
this should list pdf like
myfolder/foo/doc1.pdf
myfolder/bar/foo/doc2.pdf
note that *
in *.pdf
must be escaped if there is a pdf in starting directory.
add a comment |Â
up vote
0
down vote
try
find . -name *.pdf -print
this should list pdf like
myfolder/foo/doc1.pdf
myfolder/bar/foo/doc2.pdf
note that *
in *.pdf
must be escaped if there is a pdf in starting directory.
add a comment |Â
up vote
0
down vote
up vote
0
down vote
try
find . -name *.pdf -print
this should list pdf like
myfolder/foo/doc1.pdf
myfolder/bar/foo/doc2.pdf
note that *
in *.pdf
must be escaped if there is a pdf in starting directory.
try
find . -name *.pdf -print
this should list pdf like
myfolder/foo/doc1.pdf
myfolder/bar/foo/doc2.pdf
note that *
in *.pdf
must be escaped if there is a pdf in starting directory.
answered Mar 24 at 11:33
Archemar
18.9k93366
18.9k93366
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%2f433248%2flist-files-recursively-on-osx%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
You want to use
find
rather.â Ralph Rönnquist
Mar 24 at 11:31