Esse comando 'localizar e excluir' funciona com o asterisco, mesmo com aspas?

2

Eu quero executar um comando semelhante a este, onde arquivos AVI com mais de 7 dias serão excluídos:

encontre a pasta "/ home / user / videos / *. avi" -mtime +7 -exec rm -f

Mas, como você pode ver, a pasta de vídeos tem um espaço, então eu tive que colocar o caminho entre aspas. Mas, o asterisco ainda fará o seu trabalho para encontrar todos os arquivos AVI, ou o Linux agora acha que o asterisco é o nome real agora?

Vamos supor que não quisesse remover o espaço no caminho renomeando a pasta.

    
por nLinked 10.12.2011 / 16:36

1 resposta

3

Você precisa reformatar seu comando um pouco para que funcione.

Tente isto:

find "/home/user/videos folder" -name "*.avi" -mtime +7 -exec rm -f {} \;

Ou, no GNU find, para conseguir a mesma coisa sem -exec:

find "/home/user/videos folder" -name "*.avi" -mtime +7 -delete

O primeiro argumento a encontrar é a pasta para procurar - você não deve tentar colocar todo o seu filtro aqui, apenas o ponto de partida. Em seguida, use -name para informar qual padrão procurar. Você pode tentar isto sem o -exec ou -delete primeiro até que esteja satisfeito, então você não fará nenhum dano tentando.

Colocar um argumento entre aspas basicamente impede o shell de mexer nele. Se você usar -name *.avi , o argumento que find verá poderá ser qualquer coisa, porque o shell irá analisá-lo (e substituí-lo pelo conteúdo do diretório atual que termina em .avi) antes de chamar find . Isso geralmente é ruim e leva a resultados inesperados. find sabe como analisar * em si.

    
por Caesium 10.12.2011 / 16:38