Trova i nomi di file con un determinato modello nella riga di comando di Windows?


10

Tentativo di trovare file di un determinato modello in una directory e nelle sue sottodirectory. Provai:

C:\test\workspace>dir *.*.r[0-9]* /s /b
File Not Found

nella speranza di trovare file come

abc.txt.r12222
tjy.java.r9994

Dove viene aggiunto un numero dopo la lettera r, eseguita da SVN.

Che cosa sto facendo di sbagliato?


3
Benvenuto in SU! Sui siti di stackexchange, quando una risposta ti ha aiutato, il modo di ringraziare le persone è di votare la loro risposta e accettarla (facendo clic sul segno di spunta a sinistra di una risposta) se ha risolto il tuo problema. Sto solo dicendo che sembra che tu non abbia accettato nessuna delle risposte che hai ricevuto per le tue domande.
terdon,

Risposte:


9

Ho appena risposto a questo su Stack Overflow un paio di giorni fa. /programming/15648679/find-text-string-or-part-of-text-with-dot-in-grepwin/15648872#15648872

Nel tuo caso sembrerebbe:

dir * /s/b | findstr \.r[0-9]+$

Aggiornare

* In uno degli altri esempi ".r [0-9] * $" trova anche i record che terminano in 'r' poiché il * quantificatore significa 0 o più.


Ciao cpattersonv1 - grazie per aver risposto dir * / s / b | findstr \ .r [0-9] * $ works
chz,

findstr sembra non riconoscere il simbolo 1 o molti '+'
Scott Chu

@ScottChu inizia una nuova domanda con un esempio. (Ho risposto 5 anni fa.)
AbsoluteƵERØ

0

Il mio suggerimento per te è di farlo con grep- un'utilità per sistemi simili a UNIX che è stata portata su Windows e che può abbinare le linee usando espressioni regolari.

grepè incluso nel pacchetto MSYS di MinGW, il programma di installazione è disponibile qui . (installa solo MSYS)

Quindi dovrai aggiungere gli strumenti MSYS alla tua variabile PATH, dafeult directory per MSYS C:\MinGW\msys\1.0\bin

Finalmente puoi fare il tuo serach con questo comando:

ls -a | grep ^.+\..+\.r[0-9]+$

... che significa: "ottieni l'output da ls -a(elenco dei file inclusi i file nascosti) e passalo a grep, abbina le righe che sembrano . .r [0-9] * (con almeno un carattere simbolizzato da ciascun asterisco)".


ciao gronostaj grazie per la risposta; Ho provato$ ls -R | grep -H ^.*[0-9]$ (standard input):res.jar.r469621 (standard input):res.jar.r464460 (standard input):test.jar.r46521 (standard input):test.jar.r46970
chz

Ciao, non riesco ancora a ottenere il nome completo del percorso del nome file; Come lo faccio ? ad es. c:\pager\test.jar.r46521al contrario di (input standard): test.jar.r46521
chz

ls | grep è uguale a dir | findstr in Windows.
AbsoluteƵERØ

0

Puoi provare questo:

dir /a| findstr .r[0-9]*$

Per aiuto, digitare findstr /?.


Ciao mfm4aa grazie per la risposta - non riesco a funzionare; Ho provato tutte le combinazioni e nessuna dà la risposta elencata in formica: ad esempio inlineC:\Temp>findstr /S /B [0-9] . C:\Temp>findstr /S /B r[0-9]$ . C:\Temp>findstr /S /B $.*r[0-9]$ C:\Temp>findstr /S /B $.*r*$ C:\Temp>findstr /S /B $.*r..*$ C:\Temp>findstr /S /B $.*r\..*$ C:\Temp>findstr /S /B /R $.*r\..*$ C:\Temp>findstr /S /B /R "$.*\..r[0-9]*$ C:\Temp>findstr /S /B /R "$.*\..r[0-9]*$" C:\Temp>findstr /S /B /R "$.*\..r[0-9]*$" . C:\Temp>findstr /S /B /R "$.*\..r[0-9]$" . C:\Temp>findstr /S /B /R "$.*[0-9]*" . C:\Temp>findstr /S /B /R "$*[0-9]*" .
chz

Prova:C:\Temp>dir /aa| findstr .r[0-9]*$
Endoro,

Ciao mfm grazie per aver scritto - non riesco ancora a trovareC:\Temp>dir /aa | findstr .r[0-9]*$ File Not Found
chz

:) digita semplicemente dir /aa| findstr .r[0-9]*$.
Funziona

Ciao Endoro, grazie per la risposta. Non ha funzionato - dice File Not Found
chz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.