我需要删除当前文件夹及其子文件夹中的所有隐藏文件。是否有一条单行命令可以做到,而不需要创建脚本?
使用
find "$some_directory" -type f -name '.*' -delete
如果您想连同隐藏目录一并删除,您需要更加小心以避免删除.
和..
目录,这正如Ronald所提到的。
find "$some_directory" -name '.*' ! -name '.' ! -name '..' -delete
使用任何一个命令,你应该先不带-delete
参数运行一次,以验证find
返回的文件/目录列表是否只包含你真正想要删除的文件。
为了完整起见,我应该指出-delete
是GNU扩展的find
命令;符合POSIX标准的命令是
find "$some_directory" -type f -name '.*' -exec rm '{}' \;
即,将-delete
替换为-exec ... \;
,其中...
被用于代替您将使用以删除文件的命令行,但实际文件名应替换为'{}'
。
'.[^.]*'
应该能够找到不是 .
或 ..
的隐藏文件。 - glenn jackman针对我的Netgear Stora,我想删除所有隐藏的.webview、.thumbnails、.AppleDouble等文件和文件夹。以下操作在/home/yourusername/文件夹中进行:
find -type f -name '.*' ! -name '.' ! -name '..' -exec rm -fv '{}' \;
然后
find -type d -name '.*' ! -name '.' ! -name '..' -exec rm -frdv '{}' \;
find $some_directory '.*' -delete
吗? - Fred Foo.??*
来避免匹配.
或..
。如果你要执行rm -rf .??*
(它不会删除子目录中的点文件),这尤其有用。 - Ronald.??*
会忽略像.a
这样的“有效”点文件或目录。 - chepner