Using “find” to delete files with a pattern of underscore/letters The 2019 Stack Overflow Developer Survey Results Are InUsing find to find symlinks that point to a certain pattern of filesFind a file where name starts with a capital letterFind files that end with numberFind files whose name is 4 characters longUtilizing The 'find' Utility - Wrong Pattern?Using basename to strip file extension and search for files with the same nameDelete multiple patterns of files using one command (find)How to search files by directory and file name combo patternFind files matching template and removeIs there a way to delete all files/directories created by program?
What to do when moving next to a bird sanctuary with a loosely-domesticated cat?
Protecting Dualbooting Windows from dangerous code (like rm -rf)
How to save as into a customized destination on macOS?
Why did Acorn's A3000 have red function keys?
Why isn't the circumferential light around the M87 black hole's event horizon symmetric?
How technical should a Scrum Master be to effectively remove impediments?
Geography at the pixel level
Resizing object distorts it (Illustrator CC 2018)
How can I autofill dates in Excel excluding Sunday?
Identify boardgame from Big movie
Loose spokes after only a few rides
Are there incongruent pythagorean triangles with the same perimeter and same area?
What does ひと匙 mean in this manga and has it been used colloquially?
Deal with toxic manager when you can't quit
Why is the maximum length of OpenWrt’s root password 8 characters?
Can a flute soloist sit?
Button changing it's text & action. Good or terrible?
Why is the Constellation's nose gear so long?
How to notate time signature switching consistently every measure
Are spiders unable to hurt humans, especially very small spiders?
What could be the right powersource for 15 seconds lifespan disposable giant chainsaw?
Can someone be penalized for an "unlawful" act if no penalty is specified?
slides for 30min~1hr skype tenure track application interview
If a Druid sees an animal’s corpse, can they Wild Shape into that animal?
Using “find” to delete files with a pattern of underscore/letters
The 2019 Stack Overflow Developer Survey Results Are InUsing find to find symlinks that point to a certain pattern of filesFind a file where name starts with a capital letterFind files that end with numberFind files whose name is 4 characters longUtilizing The 'find' Utility - Wrong Pattern?Using basename to strip file extension and search for files with the same nameDelete multiple patterns of files using one command (find)How to search files by directory and file name combo patternFind files matching template and removeIs there a way to delete all files/directories created by program?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
Is there a way to find and remove files with a pattern like this (where the pattern is only that there are two underscores in the file name, separated by letters or numbers)
ex. /file_name_name
I tried to use find . -name '*_*_' -delete
to find those files, but no luck. Perhaps because the files are symlinks to directories?
find filenames
New contributor
add a comment |
Is there a way to find and remove files with a pattern like this (where the pattern is only that there are two underscores in the file name, separated by letters or numbers)
ex. /file_name_name
I tried to use find . -name '*_*_' -delete
to find those files, but no luck. Perhaps because the files are symlinks to directories?
find filenames
New contributor
2
If you don't use -delete, does it return the files?
– Nasir Riley
2 days ago
It does not sort out the files with that pattern, it shows any file that has an underscore and letters (like this- /1_name). I just want the files with two underscores separated with letters...
– David Norden
2 days ago
1
If I'm reading your intentions correctly, you want to find filenames that have two underscores in them; your initial effort is probably failing because you're asking that the filename ends with an underscore -- you'd want to add a trailing*
. You'd also want to test to see whether a file namedfile__two-underscores
counts and is matched, or not.
– Jeff Schaller♦
2 days ago
Thanks, you are completely right! It is working now.
– David Norden
yesterday
add a comment |
Is there a way to find and remove files with a pattern like this (where the pattern is only that there are two underscores in the file name, separated by letters or numbers)
ex. /file_name_name
I tried to use find . -name '*_*_' -delete
to find those files, but no luck. Perhaps because the files are symlinks to directories?
find filenames
New contributor
Is there a way to find and remove files with a pattern like this (where the pattern is only that there are two underscores in the file name, separated by letters or numbers)
ex. /file_name_name
I tried to use find . -name '*_*_' -delete
to find those files, but no luck. Perhaps because the files are symlinks to directories?
find filenames
find filenames
New contributor
New contributor
edited yesterday
Sparhawk
10.3k744101
10.3k744101
New contributor
asked 2 days ago
David NordenDavid Norden
1
1
New contributor
New contributor
2
If you don't use -delete, does it return the files?
– Nasir Riley
2 days ago
It does not sort out the files with that pattern, it shows any file that has an underscore and letters (like this- /1_name). I just want the files with two underscores separated with letters...
– David Norden
2 days ago
1
If I'm reading your intentions correctly, you want to find filenames that have two underscores in them; your initial effort is probably failing because you're asking that the filename ends with an underscore -- you'd want to add a trailing*
. You'd also want to test to see whether a file namedfile__two-underscores
counts and is matched, or not.
– Jeff Schaller♦
2 days ago
Thanks, you are completely right! It is working now.
– David Norden
yesterday
add a comment |
2
If you don't use -delete, does it return the files?
– Nasir Riley
2 days ago
It does not sort out the files with that pattern, it shows any file that has an underscore and letters (like this- /1_name). I just want the files with two underscores separated with letters...
– David Norden
2 days ago
1
If I'm reading your intentions correctly, you want to find filenames that have two underscores in them; your initial effort is probably failing because you're asking that the filename ends with an underscore -- you'd want to add a trailing*
. You'd also want to test to see whether a file namedfile__two-underscores
counts and is matched, or not.
– Jeff Schaller♦
2 days ago
Thanks, you are completely right! It is working now.
– David Norden
yesterday
2
2
If you don't use -delete, does it return the files?
– Nasir Riley
2 days ago
If you don't use -delete, does it return the files?
– Nasir Riley
2 days ago
It does not sort out the files with that pattern, it shows any file that has an underscore and letters (like this- /1_name). I just want the files with two underscores separated with letters...
– David Norden
2 days ago
It does not sort out the files with that pattern, it shows any file that has an underscore and letters (like this- /1_name). I just want the files with two underscores separated with letters...
– David Norden
2 days ago
1
1
If I'm reading your intentions correctly, you want to find filenames that have two underscores in them; your initial effort is probably failing because you're asking that the filename ends with an underscore -- you'd want to add a trailing
*
. You'd also want to test to see whether a file named file__two-underscores
counts and is matched, or not.– Jeff Schaller♦
2 days ago
If I'm reading your intentions correctly, you want to find filenames that have two underscores in them; your initial effort is probably failing because you're asking that the filename ends with an underscore -- you'd want to add a trailing
*
. You'd also want to test to see whether a file named file__two-underscores
counts and is matched, or not.– Jeff Schaller♦
2 days ago
Thanks, you are completely right! It is working now.
– David Norden
yesterday
Thanks, you are completely right! It is working now.
– David Norden
yesterday
add a comment |
1 Answer
1
active
oldest
votes
Your filename globbing pattern is almost correct for detecting names that have at least two underscores, but you are forcing the names to have an underscore at the very end.
You should be ok if you just add a final *
at the end of the pattern:
$ find . -name '*_*_*'
./file__name
./a_file_name
./more_file_name_here
To explicitly not match names with more than two underscores:
$ find . -name '*_*_*' ! -name '*_*_*_*'
./file__name
./a_file_name
The second part here, -name '*_*_*_*'
, would match any name with three or more underscores, and the preceding !
would negate the sense of the match.
Note that a find
expression without -type
will match the names of any type of file, that is, it may match the names of directories, named pipes, sockets, device files etc.
To additionally only match regular files add -type f
, or you could use ! -type d
to avoid matching directory names. Use -type l
to to match symbolic links.
The final find
command may look like:
find . -type l -name '*_*_*' ! -name '*_*_*_*' -delete
This would remove symbolic links found in the current directory, or below, whose names include exactly two underscores. The targets of the symbolic links would not be affected, unless they themselves are symbolic links with names that match the criteria and are located under the current directory.
Super! Thanks a lot, that worked like a charm!
– David Norden
yesterday
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
);
);
David Norden is a new contributor. Be nice, and check out our Code of Conduct.
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%2f511333%2fusing-find-to-delete-files-with-a-pattern-of-underscore-letters%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
Your filename globbing pattern is almost correct for detecting names that have at least two underscores, but you are forcing the names to have an underscore at the very end.
You should be ok if you just add a final *
at the end of the pattern:
$ find . -name '*_*_*'
./file__name
./a_file_name
./more_file_name_here
To explicitly not match names with more than two underscores:
$ find . -name '*_*_*' ! -name '*_*_*_*'
./file__name
./a_file_name
The second part here, -name '*_*_*_*'
, would match any name with three or more underscores, and the preceding !
would negate the sense of the match.
Note that a find
expression without -type
will match the names of any type of file, that is, it may match the names of directories, named pipes, sockets, device files etc.
To additionally only match regular files add -type f
, or you could use ! -type d
to avoid matching directory names. Use -type l
to to match symbolic links.
The final find
command may look like:
find . -type l -name '*_*_*' ! -name '*_*_*_*' -delete
This would remove symbolic links found in the current directory, or below, whose names include exactly two underscores. The targets of the symbolic links would not be affected, unless they themselves are symbolic links with names that match the criteria and are located under the current directory.
Super! Thanks a lot, that worked like a charm!
– David Norden
yesterday
add a comment |
Your filename globbing pattern is almost correct for detecting names that have at least two underscores, but you are forcing the names to have an underscore at the very end.
You should be ok if you just add a final *
at the end of the pattern:
$ find . -name '*_*_*'
./file__name
./a_file_name
./more_file_name_here
To explicitly not match names with more than two underscores:
$ find . -name '*_*_*' ! -name '*_*_*_*'
./file__name
./a_file_name
The second part here, -name '*_*_*_*'
, would match any name with three or more underscores, and the preceding !
would negate the sense of the match.
Note that a find
expression without -type
will match the names of any type of file, that is, it may match the names of directories, named pipes, sockets, device files etc.
To additionally only match regular files add -type f
, or you could use ! -type d
to avoid matching directory names. Use -type l
to to match symbolic links.
The final find
command may look like:
find . -type l -name '*_*_*' ! -name '*_*_*_*' -delete
This would remove symbolic links found in the current directory, or below, whose names include exactly two underscores. The targets of the symbolic links would not be affected, unless they themselves are symbolic links with names that match the criteria and are located under the current directory.
Super! Thanks a lot, that worked like a charm!
– David Norden
yesterday
add a comment |
Your filename globbing pattern is almost correct for detecting names that have at least two underscores, but you are forcing the names to have an underscore at the very end.
You should be ok if you just add a final *
at the end of the pattern:
$ find . -name '*_*_*'
./file__name
./a_file_name
./more_file_name_here
To explicitly not match names with more than two underscores:
$ find . -name '*_*_*' ! -name '*_*_*_*'
./file__name
./a_file_name
The second part here, -name '*_*_*_*'
, would match any name with three or more underscores, and the preceding !
would negate the sense of the match.
Note that a find
expression without -type
will match the names of any type of file, that is, it may match the names of directories, named pipes, sockets, device files etc.
To additionally only match regular files add -type f
, or you could use ! -type d
to avoid matching directory names. Use -type l
to to match symbolic links.
The final find
command may look like:
find . -type l -name '*_*_*' ! -name '*_*_*_*' -delete
This would remove symbolic links found in the current directory, or below, whose names include exactly two underscores. The targets of the symbolic links would not be affected, unless they themselves are symbolic links with names that match the criteria and are located under the current directory.
Your filename globbing pattern is almost correct for detecting names that have at least two underscores, but you are forcing the names to have an underscore at the very end.
You should be ok if you just add a final *
at the end of the pattern:
$ find . -name '*_*_*'
./file__name
./a_file_name
./more_file_name_here
To explicitly not match names with more than two underscores:
$ find . -name '*_*_*' ! -name '*_*_*_*'
./file__name
./a_file_name
The second part here, -name '*_*_*_*'
, would match any name with three or more underscores, and the preceding !
would negate the sense of the match.
Note that a find
expression without -type
will match the names of any type of file, that is, it may match the names of directories, named pipes, sockets, device files etc.
To additionally only match regular files add -type f
, or you could use ! -type d
to avoid matching directory names. Use -type l
to to match symbolic links.
The final find
command may look like:
find . -type l -name '*_*_*' ! -name '*_*_*_*' -delete
This would remove symbolic links found in the current directory, or below, whose names include exactly two underscores. The targets of the symbolic links would not be affected, unless they themselves are symbolic links with names that match the criteria and are located under the current directory.
edited yesterday
answered yesterday
Kusalananda♦Kusalananda
141k17262438
141k17262438
Super! Thanks a lot, that worked like a charm!
– David Norden
yesterday
add a comment |
Super! Thanks a lot, that worked like a charm!
– David Norden
yesterday
Super! Thanks a lot, that worked like a charm!
– David Norden
yesterday
Super! Thanks a lot, that worked like a charm!
– David Norden
yesterday
add a comment |
David Norden is a new contributor. Be nice, and check out our Code of Conduct.
David Norden is a new contributor. Be nice, and check out our Code of Conduct.
David Norden is a new contributor. Be nice, and check out our Code of Conduct.
David Norden is a new contributor. Be nice, and check out our Code of Conduct.
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%2f511333%2fusing-find-to-delete-files-with-a-pattern-of-underscore-letters%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
-filenames, find
2
If you don't use -delete, does it return the files?
– Nasir Riley
2 days ago
It does not sort out the files with that pattern, it shows any file that has an underscore and letters (like this- /1_name). I just want the files with two underscores separated with letters...
– David Norden
2 days ago
1
If I'm reading your intentions correctly, you want to find filenames that have two underscores in them; your initial effort is probably failing because you're asking that the filename ends with an underscore -- you'd want to add a trailing
*
. You'd also want to test to see whether a file namedfile__two-underscores
counts and is matched, or not.– Jeff Schaller♦
2 days ago
Thanks, you are completely right! It is working now.
– David Norden
yesterday