263

I understand I can use find . -name ".DS_Store" to find all the .DS_Store files in the current folder and all subfolders. But how could I delete them from command line simultaneously? I found it's really annoying to switch back and forth to all folders and delete it one by one.

2
  • 2
    It's odd ya' know - this voting system I mean. On June 10, 2022, this is a highly-upvoted (159 upvotes) question, and the "top 5" answers have 408 net upvotes. But the only answer that looks at this question in the broader context gets less than 1% of the total net upvotes. Commented Jun 10, 2022 at 22:07
  • Related: how to prevent them from being created defaults write com.apple.desktopservices DSDontWriteNetworkStores true (and reboot) Commented Mar 15, 2023 at 10:24

5 Answers 5

524

find can do that. Just add -delete:

find . -name ".DS_Store" -delete

Extend it even further to also print their relative paths

find . -name ".DS_Store" -print -delete

For extra caution, you can exclude directories and filter only for files

find . -name ".DS_Store" -type f -delete
Sign up to request clarification or add additional context in comments.

7 Comments

You need to fix file name case to be ".DS_Store", if used ".DS_STORE" it will not work as file names are case sensitive.
@AmrLotfy That's not actually true, the default mac file system is case insensitive
For extra caution, I usually exclude directories like this: find . -name '.DS_Store' -type f -delete
I would add this line to my .bashrc_profile, to clean the files every time I start the shell. How do I make it less verbose, or totaly quiet?
@Danijel in general, you can append 2>/dev/null 1>/dev/null to a unix command to make it quiet.
|
19

Here is how to remove recursively the .DS_Store file

Open up Terminal In the command line, go to the location of the folder where all files and folders are:

cd to/your/directory

Then finally, type in the below command:

find . -name '.DS_Store' -type f -delete

Press Enter

1 Comment

Proliferating cd superstition is doing the community a disservice. Just provide the name of the directory as the first argument to find instead of .. See also What exactly is current working directory?
13

All the answers above work but there is a bigger problem if one is using mac and still on mac. The described lines do delete all the DS_Store files but Finder recreates them immediately again because that is the default behaviour. You can read about how this all works here. To quote from there if you are on mac, you should remove them only if you really need:

If you don’t have a particular reason to delete these .DS_Store files (windows sharing might be a solid reason,) it’s best to leave them “as is.” There’s no performance benefit in deleting .DS_Store files. They are harmless files that don’t usually cause any problems. Remember that the .DS_Store file saves your personalized folder settings, such as your icon arrangement and column sortings. And that’s why you normally don’t want to delete them but rather HIDE them.

If you really do, there is one more way which was not mentioned here:

sudo find / -name “.DS_Store” -depth -exec rm {} \;

5 Comments

"Finder recreates them..." Good point - I was thinking the same thing as I read through all the fine answers here... it's like killing ants: there are always more of them! In my case, I'm trying to delete .DS_Store files that are in my NAS-housed music library - the result of lazy copying and/or rsyncing over the years.
Plus one, if you do an ordinary ls the file will not be listed as it is hidden.
The link to the appletoolbox.com is invalid. But I found a snapshot on "wayback machine". You may edit your answer if you like: web.archive.org/web/20230413062818/https://appletoolbox.com/…
@Semo for me it opens fine, and both the link in the answer and yours give the same content. But if others encounter an issue, they can use your link, thanks!
@MyWork perhaps it was down. I couldn't reach it. So at least we have a working link in case the page goes down again.
12

You can also use extended globbing (**):

rm -v **/.DS_Store

in zsh, bash 4 and similar shells (if not enabled, activate by: shopt -s globstar).

1 Comment

I found the problem to be a .DS_Store file in the navigation folder grep -r "\x00" app/src/main/res and rm -v **/.DS_Store That solved the problem
11

The best way to do this cleanly is using:

find . -type f \( -name ".DS_Store" -o -name "._.DS_Store" \) -delete -print 2>&1 | grep -v "Permission denied"

This removes the files, hides "permission denied" errors (while keeping other errors), printing out a clean list of files removed.

1 Comment

This has been the only code that seemed to do anything for me. Nothing else would work, not even the Command+Shift+period shortcut does anything for me. Most of us need to use these for our work. I can't be zipping up, trafficking & uploading DS_Store files with my ads. but work settings seem to block seeing hidden files and other commands. When I tried to run the defaults.writes line (and some other DS_Store sudo terminal code, I got a reply in the terminal telling me my action is being reported. LOL. I'm glad this line is the only thing that seems to work. Thanks!

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.