Excluindo uma pasta da exclusão de arquivos vazios com find

0

Eu normalmente apago arquivos e pastas vazios no meu diretório pessoal com o seguinte comando:

find /home/tjuh -empty -delete

No entanto, gostaria de excluir uma pasta, a saber /home/tjuh/.local/share/Steam/steamapps/common/ , então tentei:

find . -not -path '/home/tjuh/.local/share/Steam/steamapps/common/' -empty

para ver se essa pasta específica é excluída da pesquisa, mas ela não está funcionando como eu quero.

Alguma sugestão?

    
por Tjuh 15.07.2015 / 10:14

3 respostas

4

O argumento -path é um padrão, por isso você precisa usar curingas ou corresponder exatamente a ele:

find . -not -path "./.local/share/Steam/steamapps/common/*" -empty

Além disso, você tem que usar caminhos absolutos ou relativos, não misturá-los. O acima é com caminhos relativos, este é com caminhos absolutos:

find /home/tjuh -not -path "/home/tjuh/.local/share/Steam/steamapps/common/*" -empty
    
por 15.07.2015 / 10:32
0

Tente:

rm 'find /home/tjuh -empty | grep -v "^/home/tjuh/.local/share/Steam/steamapps/common/"'
    
por 15.07.2015 / 10:34
0

Se você quiser excluir esse diretório e todos os seus descendentes , -prune é o que você precisa:

find "$HOME" -path "$HOME/.local/share/Steam/steamapps/common" -prune -o -empty -delete

Isso significa que: se o caminho corresponder a $HOME/.local/share/Steam/steamapps/common , então -prune (ignore-o e seus filhos) e continue, OU se -empty , em seguida, -delete (e continue).

    
por 15.07.2015 / 11:47

Tags