localizar e excluir dá status falso

2

Eu tentei executar delete como por muitas discussões anteriores ocorridas encontrar & delete

no entanto, minhas tentativas levam a experiências diferentes.

find . -type d -name "koko" -exec rm -rf {} \;

exclui a pasta chamada koko , mas me dá falso alarme

find: ./koko: No such file or directory

o que está supostamente dando errado no meu terminal.

Estou usando tcsh e a opção -delete com a localização não funciona bem.

aqui está o instantâneo de

    
por JigarGandhi 02.12.2014 / 11:37

2 respostas

1

Se você usar a opção -prune conforme sugerido em esta resposta , a mensagem de erro não ocorrerá .

Citando a resposta acima,

Use -prune on the directories that you're going to delete anyway to tell find not to bother trying to find files in them.

Teste

mkdir koko
cd koko
touch file{1,2}
cd ..
find . -type d -name "koko" -prune -exec rm -rf {} \;

Depois de executar o comando find acima, obtenho o prompt sem nenhum erro. No entanto, se eu não usar a opção -prune , recebo o mesmo erro que você mencionou.

    
por 02.12.2014 / 17:04
1

O problema é que find encontrou um diretório, ele corresponde à sua seleção e, em seguida, o comando é executado. No entanto, find quer fazer o que vem naturalmente, e isso é recursivo através de uma árvore de diretórios, mas o diretório que acabou de encontrar desapareceu! Daí a mensagem de erro.

Você pode contornar isso fornecendo a opção --depth , o que significa processar o conteúdo de cada diretório antes do próprio diretório . A página man também menciona que a opção -delete também implica essa opção, que é pelo motivo acima.

    
por 02.12.2014 / 17:01

Tags