2012-05-07 18 views
-2

私は、同じ3文字で始まるすべてのファイルを選択できるWindowsシェルコマンドを見つけようとしています。 000world 111foo 121bar同じ最初の数文字でファイルを見つける

000helloは、コマンドは私の最初の2つのファイルになるだろう。だから、たとえばディレクトリには、以下があった場合。これを行う方法はありますか?

+3

WindowsシェルまたはBash?彼らは同じではありません。あなたが望むことをするためのテクニックは大きく異なるので、適切にタグ付けされた2つの質問を投稿する必要があります。 –

+0

タグをタグとして/ powershellとしてcmdを追加してください。 – tuxnani

答えて

0

使用bashは右

$ 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' 'script'で彼の質問にタグを付けました。彼はCygwinを使用しているに違いありません。私はそれが混乱thoに同意するだろう。 – KurzedMetal

+0

@ KurzedMetalうん。私もそれを見た。そして私はまた混乱しています。 – Marc

+0

問題は、私は000ですべてのファイルを選択したい、何らかの操作をしたい、そして111のような同じファイル名を持つ他のファイルが存在するならば、それらに同じ操作をしなさい。だから私はディレクトリ内のwhatsをあらかじめ知っていません。私は、同じ接頭辞を持つファイルのグループを1つずつ選択し、その上で何らかの操作を行います。 –

0

タグが付いているので、どのような解決策が必要なのかは明らかではありませんが、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 } 
関連する問題