De: link
% bl0ck_qu0te% Eu olhei tudo, e não consigo descobrir o que !
significa no Ubuntu, eu vejo tudo de novo. por exemplo:
find -f -d !(.txt)
De: link
% bl0ck_qu0te%Fora do seu uso na expansão do histórico da shell, abordado na resposta do Android Dev , o uso mais comum é expressar a negação ou definir complementação. Por exemplo, em globs simples de shell
ls [!a-c]*
lista os arquivos , exceto os que começam com um caractere no intervalo a-c
. Você também pode ver isso escrito com um acento circunflexo no lugar do ponto de exclamação [^a-c]
(emprestado da sintaxe da expressão regular), embora o último formulário não seja compatível com POSIX.
O Bash estende a noção de complementação para padrões inteiros em seus globs de shell estendidos para que, por exemplo
ls !(*.txt)
lista todos os arquivos, exceto os que terminam em uma extensão .txt
.
Alguns comandos individuais também usam independentemente !
no sentido de negação ou complementação lógica - por exemplo
find ! -name '*.txt'
embora o GNU find
pelo menos também suporte a forma mais longa -not
neste contexto (embora novamente isso não seja compatível com POSIX).
Seu exemplo parece confundir esses dois últimos usos - parece um shell glob estendido, mas ocorre como parte de um comando find
onde tal expansão de shell não seria válida 1 .
1 um shell glob estendido poderia ser usado para construir uma lista de diretórios para find
pesquisar - algo como find !(foo*)/ -name '*.bar'
por exemplo