Por que 'encontrar' imprimir barras?


1

Eu tenho o seguinte comando:

find Acc*\bin\Debug\*.pdb > temp.txt

Olhando em temp.txt, eu tenho:

Accounting/bin/Debug/Accounting.pdb
Accounting/bin/Debug/BackendProcess.pdb

Observe as barras. Por que ele gera nomes de arquivos como este? E como faço para gerar barras invertidas, para usar del nesses arquivos?

Respostas:


2

encontrar procura por uma string de pesquisa em arquivos. Talvez você esteja procurando algo como dir *.pdb /S /B > temp.txt em vez de?


1

Eu acho que você usou algum tipo de porta para encontrar (1) no DOS. se você encontrar, eu acho que você também pode ter sed ... e então ...

find condição | sed 's /// \ / g'

isso deve fazer o trabalho.

caso contrário, siga o que @Johannes Rössel disse.


1
Ah, certo. Deveria ter pensado em sed(1). Em qualquer caso, uma porta que imponha semântica de nome de arquivo UNIX em SOs estrangeiros não vale a pena usar, imho.
Joey

É o padrão cygwin porta, e ambas as semânticas são usadas pelo Windows na maioria dos lugares.
OmnipotentEntity

0

Eu estou olhando para listar os arquivos com os curingas que eu mencionei. Dir não pode fazer isso. Find funciona bem se a saída estiver no console:

find Acc*\bin\Debug\*.pdb

vai sair

Accounting\bin\Debug\Accounting.pdb
Accounting\bin\Debug\BackendProcess.pd

É apenas o redirecionamento de arquivos que dá errado.


Ao esclarecer sua dúvida, use o link "editar" na pergunta. Não publique uma resposta para esclarecer a questão.
T.J. Crowder

0

Parece que você usa uma porta ruim do UNIX find(1) comando e não o (anteriormente-DOS) find utilidade. Já que você aparentemente tem essas ferramentas na sua máquina, você pode simplesmente usar rm(1) ao invés de del nesses arquivos.

Outra opção é iterar a saída e substituir o virgule por uma barra invertida (assumindo um arquivo em lotes aqui):

setlocal enableextensions enabledelayedexpansion
for /f "delims=" %%x in ('find Acc*\bin\Debug\*.pdb') do (
    set fn=%%x
    set fn=!fn:/=\!
    >>temp.txt echo.!fn!
)

Breve nota sobre porque rm funciona: A API do Windows geralmente não apresenta problemas com barras invertidas em vez de barras invertidas. No entanto, os comandos internos cmd Faz tem problemas. Desde a del é um shell embutido e rm não é, funciona com rm mesmo com barras.
Joey

Você estava certo, eu tinha algumas ferramentas unix instaladas e o rm funcionava. Muito obrigado.
mihai
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.