Você pode tentar o seguinte, para confirmar ao excluir cada arquivo primeiro:
$ find /path/to/dir -type f -name "*.txt" -empty -ok rm {} \;
ou se você se sentir mais confiante:
$ find /path/to/dir -type f -name "*.txt" -empty -exec rm {} \;
Eu quero excluir todos os arquivos vazios com uma extensão específica de um diretório e todos os seus subdiretórios.
Você pode tentar o seguinte, para confirmar ao excluir cada arquivo primeiro:
$ find /path/to/dir -type f -name "*.txt" -empty -ok rm {} \;
ou se você se sentir mais confiante:
$ find /path/to/dir -type f -name "*.txt" -empty -exec rm {} \;
Normalmente, a resposta para "como eu faço… em um diretório e seus subdiretórios" envolve find
. Use -type f
para corresponder aos arquivos regulares, -name '*.ext'
para restringir a uma extensão específica e -size 0
para restringir a arquivos vazios.
find /some/dir -name '*.ext' -type f -size 0 -exec rm {} +
Se a sua versão de find
for muito antiga, você pode precisar de '… -exec rm {} \;' em vez disso (usar +
é mais rápido porque chama rm
em muitos arquivos de uma só vez). No Linux, FreeBSD, NetBSD e OSX, você pode usar a ação find
do -delete
e o predicado -empty
(equivalente a -size 0
nos arquivos regulares):
find /some/dir -name '*.ext' -type f -empty -delete
Em zsh, você pode usar o **
glob para recursar em subdiretórios e qualificadores .
), de tamanho 0 ( L0
).
rm /some/dir/**/*.ext(.L0)
Tags command-line find search