2011-01-15 13 views
6

Belirli bir uzantıya sahip olmayan veya belirli bir uzantı kümesine sahip olmayan bir dizini yinelemeli olarak aramak ve dosyaları bulmak istiyorum.Windows CMD: Belirtilen uzantılara sahip olmayan dizin ve dosyaları listele

Kroki: ama maalesef olmadan,

Etrafa DIR ve Attrib ile birkaç saat çalıştı .txt "EXT1'den", "ext2", "ext3" ve baskı sonuçları olmadan "dir" tüm dosyaları bulmak daha büyük başarı.

Saygınız çok dikkate değer! Teşekkürler.

+0

Cygwin'i yüklerseniz ve ör. 'Find'. –

+5

Cygwin'i yükle ?! Çıldırıyorsunuz, bu önemsiz bir sorunun üstesinden gelen ciddi bir çözüm. Daha fazla araca ihtiyacınız varsa, o zaman bazı doğal olanlar (ör. GnuWin32) noktaya daha çok olurdu. Bu örneğin grep'teki bir astardır. Ve LittleBobbyTables işaret ettiği gibi, cmd yorumlayıcı tarafından doğal olarak yapılabilir. –

+0

@David: Doğal olarak değil, ancak hemen hemen her yerde kullanılabilen araçlarla ('findstr', cmd'nin yerleşik bir komutu değil, 'dir'). Cygwin'i buna dahil etmenin çılgınlığı konusunda anlaştık. Güzel ve zarif bir çözüm için – Joey

cevap

10

bu deneyin:

dir /b /s /a-d | findstr /vi ".ext1$ .ext2$ .ext3$" 

/a-d anahtarı dışlayan dizinleri, size sadece dosyaları vererek. findstr parametresi, dizeler için dosyaları aramanıza izin verir ve /vi anahtarı, sonraki parametreyi içeren dosyaları hariç tutmak için büyük/küçük harfe duyarlıdır.

Joey'in belirttiği gibi, hattın sonunu belirtmek için $ gereklidir.

+1

+1. Bununla birlikte, kullanıcı için dikkat: Eğer seçili OEM karakter kümesinde * ve * 'de gösterilemeyen Unicode dosya adlarınız varsa, * cmd'de Raster yazı tiplerini etkinleştirdiyseniz, bu dosya isimlerini karıştırır ve onlarla hiçbir şey yapamazsınız. . – Joey

+0

Başka yan not: Bu uzantıları filtre, ancak dosya isimlerinin altdizgelerin olmayacaktır. Yani 'foo.ext1.bar' adlı bir dosyanız varsa, filtrelenirsiniz. Kesinlikle bir çekicilik gibi çalışan – Joey

+0

. Tam olarak aradığım ifade. çok teşekkür ederim. – DapperDan

İlgili konular