O script a seguir exclui de forma não recursiva arquivos vazios comuns, sem incluir os com ponto, e então exclui de forma não recursiva diretórios vazios, sem incluir os com ponto, e ignorando a presença de .DS_Store
arquivos (ou seja, se o diretório contiver apenas um .DS_Store
arquivo, esse diretório será excluído mesmo assim).
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)
Alguém poderia mostrar como fazer isso funcionar recursivamente? Ou seja, o primeiro passo é deletar recursivamente todos os arquivos regulares vazios. E então deletar recursivamente os diretórios vazios.
Eu tentaria fazer isso sozinho, mas, para ser honesto, estou com medo de experimentar o rm
comando.