2012-05-07 46 views
-2

我試着去找到一個Windows shell命令,讓我開始選擇同爲3個字符的所有文件。因此,舉例來說,如果一個目錄有以下幾點:具有相同的前幾個字符查找文件

000hello 000world 111foo 121bar

命令會得到我的前兩個文件。有沒有辦法做到這一點?

+3

的Windows Shell或bash?他們不一樣。由於做你想要的技術是非常不同的,你應該發佈兩個單獨的,正確標記的問題。 –

+0

請添加cmd作爲tag/powershell作爲標記。 – tuxnani

回答

0

使用通配符慶典

$ echo 000* 
+0

「glob」是文檔中使用的術語。 – jordanm

0

Windows命令行,對吧?

dir 000* 

*是通配符在文件名中的任何字符匹配

?是一個通配符,基於新的信息的文件名

匹配單個字符:

for /f %i in ('dir /b 000*') do (
    echo %i is the name of the file we found 
    type %i 
) 

如果您使用的是批處理文件,請使用%%i

這是假設你想留在當前的工作目錄。如果您想將目錄樹轉到子目錄,請使用for /r

+0

他用'bash'' shell''腳本標記了他的問題,他必須使用Cygwin。我同意這是令人困惑的壽。 – KurzedMetal

+0

@KurzedMetal是的。我也看到了。而且我也很困惑。 – Marc

+0

問題是,我想選擇所有文件與000,做一些操作,那麼如果與諸如111存在相同的文件名的其他文件,這樣做對他們同樣的操作...等等。所以我不知道在目錄中什麼。我只是選擇具有相同前綴的文件組,並對它們進行一些操作 –

0

由於它被標記的Windows,它是不明確類型的解決方案需要的是什麼,但如果使用Ruby是一種可能性,這可能會奏效。

# create a hash of arrays where the hash value is the first three letters of the 
# file name and the value is an array of those entries. 
h = Hash.new{|h,k| h[k] = []} 
Dir.foreach(".") { |f| h[f[0..2]] << f } 

# then print/use the ones that have multiple entries 
h.each_key { |k| puts h[k] if h[k].length > 1 } 
相關問題