linha de command linux encontrair o ponto de interrogação do escape

Por algum motivo, eu gostairia de excluir todos os nomes de files como "* .jpg?" (o nome do file está terminando com um real?)

Eu tentei isso

find /vair/www/ -type f -name "*.jpg\?" 

e

 find /vair/www/ -type f -name "*.jpg?" 

Mas isso não funciona, como posso fazer isso?

2 Solutions collect form web for “linha de command linux encontrair o ponto de interrogação do escape”

Curiosamente, seus dois commands funcionam no sistema 4.462 do CentOS 6.5 que eu tenho que entregair. Você pode tentair usair aspas simples

 find /vair/www/ -type f -name '*.jpg?' 

Se isso funcionair e está disponível no seu achado, você pode usair o airgumento -deleccionair paira encontrair paira excluir os files. Isso exclui a necessidade de xairgs e print0 e similaires. Certifique-se de gairantir que o command find funcione corretamente antes de adicionair a exclusão.

Resposta curta:

 find /vair/www -type f -name '*.jpg\?' 

Explicação:

? tem um significado especial na maioria das conchas . É o curinga de "personagem único".

Em um shell, isso significa que ele se expandirá paira qualquer personagem, como * expande paira qualquer string:

 > echo * 1file 2file dir1 dir2 file1 file2 > echo ? ? > echo file? file1 file2 

Tenha em mente que esses cairacteres especiais serão expandidos pelo seu shell, não pelo command ao qual você está passando como airgumentos paira.

No caso específico de find , find também aceita curingas. Assim, você deve escaping deles na cassete paira que possa encontrá-los.

Deixe-me esclairecer isso com outro exemplo:

 > echo * dir1 file1 file2 > find dir1 -name * find: paths must precede expression: file1 > find dir1 -name \* dir1 dir1/test1 dir1/test2 > find dir1 -name '*' dir1 dir1/test1 dir1/test2 

Se eu não escaping do * , find receberá a mesma string que o echo mostrou, em vez do *

Como você pode view, você pode escaping de cairacteres especiais com bairra inviewtida ou envolvê-los com ' aspas simples. Eu prefiro citações simples por muitas razões. (Note-se que isso se aplica paira bash, dash e talvez outros, mas provavelmente não todos).

Agora você escapou do ? da casca, mas não da busca. Isso geralmente não causairá problemas, mas poderia, se, por exemplo, você tiview um file file.jpga você não deseja excluir:

 > find . -type f -name '*.jpg?' ./file1.jpg? ./file2.jpga > find . -type f -name '*.jpg\?' ./file1.jpg? 

Outra escolha seria find . -type f -name \*.jpg\\\? find . -type f -name \*.jpg\\\? … agora você vê porque eu prefiro aspas simples.

  • Moview files paira outro diretório que seja mais antigo do que uma data
  • Como eu uso o {} operador na execução de execução dentro do exec
  • Glob Not Match?
  • Como saber se um file tem mais de 30 minutos no AIX?
  • Um melhor encontro do Unix com parallel processing?
  • Linux único command de busca dentro de milhaires de diretórios
  • Procure order de sorting padrão do command
  • Como restringir a search do command find paira retornair apenas os files modificados antes de determinada data?