以下脚本非递归地删除常规空文件(不包括点文件),然后非递归地删除空目录(不包括点文件),并忽略.DS_Store
文件的存在(也就是说,如果目录只包含一个.DS_Store
文件,那么该目录仍然会被删除)。
rm -f -- *(.L0)
setopt extended_glob
has_files_other_than_DS_Store() [[ -n $REPLY/^(#i).ds_store(#qNDY1) ]]
remove_empty_macos_dirs() {
local dir ret=0
for dir do
rm -f -- $dir/.(#i)ds_store(N.) && rmdir -- $dir || ret=$?
done
return $ret
}
remove_empty_macos_dirs *(/^+has_files_other_than_DS_Store)
有人能演示如何使其递归工作吗?也就是说,第一步是递归删除所有空的常规文件。然后递归删除空目录。
我会自己尝试,但说实话,我只是害怕尝试这个rm
命令。