如果使用OS X,则可能会因使用Finder而臭名昭著的隐藏“ .DS_Store”文件。
挑战在于编写将遍历整个文件系统的代码,并删除任何名为“ .DS_Store”的文件。
高尔夫经典代码-最短代码获胜。
说明:
代码中并没有需要删除需要超级用户的任何.DS_Store文件; 假设不存在此类文件。
该代码仅应删除相关的.DS_Store文件,而不能删除其他任何文件。
如果使用OS X,则可能会因使用Finder而臭名昭著的隐藏“ .DS_Store”文件。
挑战在于编写将遍历整个文件系统的代码,并删除任何名为“ .DS_Store”的文件。
高尔夫经典代码-最短代码获胜。
说明:
代码中并没有需要删除需要超级用户的任何.DS_Store文件; 假设不存在此类文件。
该代码仅应删除相关的.DS_Store文件,而不能删除其他任何文件。
Answers:
find / -name .DS_Store -delete
find / -name .DS_Store -exec rm -f {} \;
这应该可以处理它(不是很打高尔夫球,不是很慢)。Bash似乎是正确的,因为我们不必处理任何“导入系统”的废话。如果要在任何环境中执行,都需要在其中添加4个字符,bash
并在换行符中添加1个字符。
*我猜是任何壳,假设伯恩再来壳是唯一的壳,那就不能摆脱习惯。
find
OS X 是什么样的?随着GNU find
更短:find / -name .DS_Store -delete
。
bash
4或更高版本且globstar
打开了shell选项,或者是zsh
:rm /**/.DS_Store
。
.DS_Store
我有重要内容的目录。
File.delete *Dir['/**/.DS_Store']
Dir[...]
是的快捷方式Dir.glob(...)
,这将为您节省5个字符。
Kernel
。谢谢@padde。
del/s "/.DS_Store
非常简单。
/s
在子目录中搜索也是必需的。
"
用于转义/
字符,否则将其解释为(无效)参数。
先前的find
解决方案是完全错误的:意味着删除所有命名的内容,.DS_Store
包括目录,链接,特殊文件等。
但:
find / -type f -name .DS_Store -delete
这是使用的最小解决方案find
。
免责声明:我强烈建议您不要在真正的* nix框上真正使用此解决方案:尝试从中递归删除某些内容/
是一个非常糟糕的主意。警告您。
编辑:
如果您不清楚文件,目录,链接(硬和符号),命名管道,套接字,特殊文件,伪文件系统之间的差异,建议使用google这个未知术语。您会感到惊讶,更明智,而且不大可能出现(catstrofic)错误。
EDIT2:更加相关:OP写道“该代码应只删除相关的.DS_Store文件,而不能删除其他任何文件。” :因此,如果有人希望阅读无聊的要求,那么删除此文件之外的所有解决方案都非常有趣,精巧。但是错了。
find
解决方案是正确的。问题是“删除任何名为“ .DS_Store”的文件”。因此,没有基于文件类型的特殊要求。