2009-05-07 18 views

risposta

12

Penso che ci sia un'opzione/v per il findstr che è equivalente a grep -v (includere tutte le righe che non facciamo contenere il testo in modo sarei guardando:

dir | findstr /vi ".pdf" 

Il sintassi può essere leggermente diversa, non ho avuto molto bisogno di usarlo e ho don'r eseguire Windows in mia posizione attuale.

usa findstr /? al prompt dei comandi per i dettagli.

O, se si installa CygWin (il mio strumento di scelta per t il suo genere di cose), si può semplicemente utilizzare grep stesso:

ls -al | grep -vi '\.pdf$' 

Addendum:

ho effettivamente fatto non si rendono conto questo, ma a quanto pare anche FINDSTR supportano espressioni regolari in modo da poter utilizzare:

dir | findstr /vi "\.pdf$" 

proprio come grep (non l'ho provato, l'ho appena trovato su TechNet, quindi è necessario testarlo da soli).

+0

+1 Che sembra farlo - bel lavoro. –

+0

Grazie, @Andrew, non volevo davvero avviare VMWare Player solo per testarlo :-) – paxdiablo

+0

Funziona alla grande. Grazie! –

3

È possibile combinare dir con findstr a quasi fare quello che vuoi:

dir * | findstr /vi .pdf 

nota, però, che se un file è denominato my.pdf.converted.txt, sarà gettato in modo errato via qui.

se si vuole veramente ottenere fantasia, ecco una versione completamente corretta, più appropriato per uno script batch:

for /f %a in ('dir /b *') do @if "%~xa" neq ".txt" echo %a 

Buona fortuna non importa che cosa si prova :) DOS è "divertimento".

+0

Benedettamente, non ho a che fare con trucchi come il tuo esempio "pdf.converted.txt". Buona cattura, però! –

+0

findstr in XP mi dice che può gestire regex abbastanza bene da far corrispondere la fine della linea nel solito modo, anche – Anonymous

0

So che sta già funzionando per voi ma potreste farlo con la maggior parte delle versioni di DOS (almeno quelle che ricordo) come questo.

Attrib * .bad + H
dir/oE
Attrib * .bad -H

che ha l'effetto di nascondere quelli che non si desidera visualizzare, fare il dir poi unhiding . È un po 'brutto devo ammettere, ma sembra fare il trucco.

0

In MS-DOS o CMD basta digitare per evitare file pdf:

dir | find/V ".pdf" 

Ma ricordate il numero di file in fondo l'uscita includerà il file pdf (s).

Inoltre, è possibile utilizzare questo comando anche per altre estensioni sostituendo ".pdf" a ".xxx", dove xxx è un'estensione qualsiasi.

0

Ecco un modo semplice senza utilizzare findstr/trovare o tubazioni per un altro comando:

for %%a in (*) do (
    if not exist %%~Na.pdf echo %%a 
) 

Fondamentalmente il ciclo for ciclo volontà attraverso tutti i file. Il "se non esiste" assicurerà che non venga stampato alcun file * .pdf

Il %% ~ Na indica il nome file di %% una variabile senza estensione.

Problemi correlati