“paths must precede expression” error when trying to find all jpg files in the current directory
while running find command to find all the jpg files in the current directory as
find . -maxdepth 1 -type f -name *.jpg
i am getting the error as :
find: paths must precede expression: pic1 (1).jpg
Usage: find [-H] [-L] [-P] [-Olevel] [-Dhelp|tree|search|stat|rates|opt|exec] [path...] [expression]
i am not able to figure out what is wrong with that .
find
add a comment |
while running find command to find all the jpg files in the current directory as
find . -maxdepth 1 -type f -name *.jpg
i am getting the error as :
find: paths must precede expression: pic1 (1).jpg
Usage: find [-H] [-L] [-P] [-Olevel] [-Dhelp|tree|search|stat|rates|opt|exec] [path...] [expression]
i am not able to figure out what is wrong with that .
find
2
If you have a .jpg file in the current directory then your shell will expand your wildcard to be a list of the jpg files. Put your pattern in quotes to prevent this: "*.jpg"
– Jeremy L
Mar 14 '11 at 15:58
@Nerdling: Why don't you make your comment an answer (which it is)? :)
– arrange
Mar 14 '11 at 16:22
add a comment |
while running find command to find all the jpg files in the current directory as
find . -maxdepth 1 -type f -name *.jpg
i am getting the error as :
find: paths must precede expression: pic1 (1).jpg
Usage: find [-H] [-L] [-P] [-Olevel] [-Dhelp|tree|search|stat|rates|opt|exec] [path...] [expression]
i am not able to figure out what is wrong with that .
find
while running find command to find all the jpg files in the current directory as
find . -maxdepth 1 -type f -name *.jpg
i am getting the error as :
find: paths must precede expression: pic1 (1).jpg
Usage: find [-H] [-L] [-P] [-Olevel] [-Dhelp|tree|search|stat|rates|opt|exec] [path...] [expression]
i am not able to figure out what is wrong with that .
find
find
edited Mar 14 '11 at 20:28
Lekensteyn
120k48263355
120k48263355
asked Mar 14 '11 at 15:33
Bunny Rabbit
4192817
4192817
2
If you have a .jpg file in the current directory then your shell will expand your wildcard to be a list of the jpg files. Put your pattern in quotes to prevent this: "*.jpg"
– Jeremy L
Mar 14 '11 at 15:58
@Nerdling: Why don't you make your comment an answer (which it is)? :)
– arrange
Mar 14 '11 at 16:22
add a comment |
2
If you have a .jpg file in the current directory then your shell will expand your wildcard to be a list of the jpg files. Put your pattern in quotes to prevent this: "*.jpg"
– Jeremy L
Mar 14 '11 at 15:58
@Nerdling: Why don't you make your comment an answer (which it is)? :)
– arrange
Mar 14 '11 at 16:22
2
2
If you have a .jpg file in the current directory then your shell will expand your wildcard to be a list of the jpg files. Put your pattern in quotes to prevent this: "*.jpg"
– Jeremy L
Mar 14 '11 at 15:58
If you have a .jpg file in the current directory then your shell will expand your wildcard to be a list of the jpg files. Put your pattern in quotes to prevent this: "*.jpg"
– Jeremy L
Mar 14 '11 at 15:58
@Nerdling: Why don't you make your comment an answer (which it is)? :)
– arrange
Mar 14 '11 at 16:22
@Nerdling: Why don't you make your comment an answer (which it is)? :)
– arrange
Mar 14 '11 at 16:22
add a comment |
1 Answer
1
active
oldest
votes
tl;dr Always quote globs in find: find . -maxdepth 1 -type f -name "*.jpg"
(notice the "
characters surrounding *
).
In your case, the shell is interpreting *.jpg
(note the *
character) and trying to match file names within the current directory that end in .jpg
. There is a file named pic1 (1).jpg
so that file name replaces *.jpg
. The command the system is given by the shell becomes
find . -maxdepth 1 -type f -name 'pic1 (1).jpg'
To see in depth, try tracing the original command using strace
. What is actually executed is:
touch foo.jpg bar.jpg
strace find . -maxdepth 1 -type f -name *.jpg 2>&1 | grep jpg
execve("/usr/bin/find", ["find", ".", "-maxdepth", "1", "-type", "f", "-name", "bar.jpg", "foo.jpg"], [/* 62 vars */]) = 0
...
3
strace is a great tool, but definitely an overkill for somebody who doesn't understand shell expansion. It's much simpler to step back in the shell history and just prepend the command with "echo".
– Adam Byrtek
Mar 14 '11 at 23:42
Always
is, as always :) , too often.find proj*
-type f -name foobar` will search in every directory which matches ./proj* for example; perfectly valid and reasonable.
– user unknown
Mar 26 '11 at 16:57
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "89"
};
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%2faskubuntu.com%2fquestions%2f30330%2fpaths-must-precede-expression-error-when-trying-to-find-all-jpg-files-in-the-c%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
tl;dr Always quote globs in find: find . -maxdepth 1 -type f -name "*.jpg"
(notice the "
characters surrounding *
).
In your case, the shell is interpreting *.jpg
(note the *
character) and trying to match file names within the current directory that end in .jpg
. There is a file named pic1 (1).jpg
so that file name replaces *.jpg
. The command the system is given by the shell becomes
find . -maxdepth 1 -type f -name 'pic1 (1).jpg'
To see in depth, try tracing the original command using strace
. What is actually executed is:
touch foo.jpg bar.jpg
strace find . -maxdepth 1 -type f -name *.jpg 2>&1 | grep jpg
execve("/usr/bin/find", ["find", ".", "-maxdepth", "1", "-type", "f", "-name", "bar.jpg", "foo.jpg"], [/* 62 vars */]) = 0
...
3
strace is a great tool, but definitely an overkill for somebody who doesn't understand shell expansion. It's much simpler to step back in the shell history and just prepend the command with "echo".
– Adam Byrtek
Mar 14 '11 at 23:42
Always
is, as always :) , too often.find proj*
-type f -name foobar` will search in every directory which matches ./proj* for example; perfectly valid and reasonable.
– user unknown
Mar 26 '11 at 16:57
add a comment |
tl;dr Always quote globs in find: find . -maxdepth 1 -type f -name "*.jpg"
(notice the "
characters surrounding *
).
In your case, the shell is interpreting *.jpg
(note the *
character) and trying to match file names within the current directory that end in .jpg
. There is a file named pic1 (1).jpg
so that file name replaces *.jpg
. The command the system is given by the shell becomes
find . -maxdepth 1 -type f -name 'pic1 (1).jpg'
To see in depth, try tracing the original command using strace
. What is actually executed is:
touch foo.jpg bar.jpg
strace find . -maxdepth 1 -type f -name *.jpg 2>&1 | grep jpg
execve("/usr/bin/find", ["find", ".", "-maxdepth", "1", "-type", "f", "-name", "bar.jpg", "foo.jpg"], [/* 62 vars */]) = 0
...
3
strace is a great tool, but definitely an overkill for somebody who doesn't understand shell expansion. It's much simpler to step back in the shell history and just prepend the command with "echo".
– Adam Byrtek
Mar 14 '11 at 23:42
Always
is, as always :) , too often.find proj*
-type f -name foobar` will search in every directory which matches ./proj* for example; perfectly valid and reasonable.
– user unknown
Mar 26 '11 at 16:57
add a comment |
tl;dr Always quote globs in find: find . -maxdepth 1 -type f -name "*.jpg"
(notice the "
characters surrounding *
).
In your case, the shell is interpreting *.jpg
(note the *
character) and trying to match file names within the current directory that end in .jpg
. There is a file named pic1 (1).jpg
so that file name replaces *.jpg
. The command the system is given by the shell becomes
find . -maxdepth 1 -type f -name 'pic1 (1).jpg'
To see in depth, try tracing the original command using strace
. What is actually executed is:
touch foo.jpg bar.jpg
strace find . -maxdepth 1 -type f -name *.jpg 2>&1 | grep jpg
execve("/usr/bin/find", ["find", ".", "-maxdepth", "1", "-type", "f", "-name", "bar.jpg", "foo.jpg"], [/* 62 vars */]) = 0
...
tl;dr Always quote globs in find: find . -maxdepth 1 -type f -name "*.jpg"
(notice the "
characters surrounding *
).
In your case, the shell is interpreting *.jpg
(note the *
character) and trying to match file names within the current directory that end in .jpg
. There is a file named pic1 (1).jpg
so that file name replaces *.jpg
. The command the system is given by the shell becomes
find . -maxdepth 1 -type f -name 'pic1 (1).jpg'
To see in depth, try tracing the original command using strace
. What is actually executed is:
touch foo.jpg bar.jpg
strace find . -maxdepth 1 -type f -name *.jpg 2>&1 | grep jpg
execve("/usr/bin/find", ["find", ".", "-maxdepth", "1", "-type", "f", "-name", "bar.jpg", "foo.jpg"], [/* 62 vars */]) = 0
...
edited Jan 2 at 5:22
answered Mar 14 '11 at 16:36
l0b0
3,93173259
3,93173259
3
strace is a great tool, but definitely an overkill for somebody who doesn't understand shell expansion. It's much simpler to step back in the shell history and just prepend the command with "echo".
– Adam Byrtek
Mar 14 '11 at 23:42
Always
is, as always :) , too often.find proj*
-type f -name foobar` will search in every directory which matches ./proj* for example; perfectly valid and reasonable.
– user unknown
Mar 26 '11 at 16:57
add a comment |
3
strace is a great tool, but definitely an overkill for somebody who doesn't understand shell expansion. It's much simpler to step back in the shell history and just prepend the command with "echo".
– Adam Byrtek
Mar 14 '11 at 23:42
Always
is, as always :) , too often.find proj*
-type f -name foobar` will search in every directory which matches ./proj* for example; perfectly valid and reasonable.
– user unknown
Mar 26 '11 at 16:57
3
3
strace is a great tool, but definitely an overkill for somebody who doesn't understand shell expansion. It's much simpler to step back in the shell history and just prepend the command with "echo".
– Adam Byrtek
Mar 14 '11 at 23:42
strace is a great tool, but definitely an overkill for somebody who doesn't understand shell expansion. It's much simpler to step back in the shell history and just prepend the command with "echo".
– Adam Byrtek
Mar 14 '11 at 23:42
Always
is, as always :) , too often. find proj*
-type f -name foobar` will search in every directory which matches ./proj* for example; perfectly valid and reasonable.– user unknown
Mar 26 '11 at 16:57
Always
is, as always :) , too often. find proj*
-type f -name foobar` will search in every directory which matches ./proj* for example; perfectly valid and reasonable.– user unknown
Mar 26 '11 at 16:57
add a comment |
Thanks for contributing an answer to Ask Ubuntu!
- 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%2faskubuntu.com%2fquestions%2f30330%2fpaths-must-precede-expression-error-when-trying-to-find-all-jpg-files-in-the-c%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
2
If you have a .jpg file in the current directory then your shell will expand your wildcard to be a list of the jpg files. Put your pattern in quotes to prevent this: "*.jpg"
– Jeremy L
Mar 14 '11 at 15:58
@Nerdling: Why don't you make your comment an answer (which it is)? :)
– arrange
Mar 14 '11 at 16:22