タグ付けされた質問 「wildcards」

グロッビングとは、ワイルドカードを含む名前パターンでファイルを照合することを意味します。

3
1種類(またはそれ以上)のファイルタイプを除くすべてを削除する
フォルダー内のすべてのファイルを削除するコマンドを見つけようとしましたが、ファイルタイプの種類は探していませんでした。しかし、私は運がないようです。私が今までに試したこと: set extended_glob rm !(*.dmg) # this returns zsh:number expected rm ./^*.dmg # this returns no matches found 私が使用しているzshのバージョンはですzsh 5.0.2 (x86_64-apple-darwin13.0.1)。
20 zsh  wildcards 

1
echo [9876543210]は1 4 5 6を表示します…なぜですか?
最後の4つのエコーステートメントに対して1 4 5 6が表示される理由を説明してください。私は偶然これにぶつかったのですが、今ではこの動作がなぜ起こるのか興味があります。 これらのステートメントは期待どおりに機能します(私にとって)。 $ echo [ 9876543210 ] [ 9876543210 ] $ echo [237890] [237890] これらのechoステートメントは常に1 4 5 6を表示します。これらの数値について何か特別なことはありますか? $ echo [9876543210] 1 4 5 6 $ echo [abcd9876543210ghi] 1 4 5 6 $ echo [-123456-] 1 4 5 6 $ echo [-7654321-] 1 4 5 6 ありがとう! …


2
zsh:パターンからファイルを除外する
次のファイルがあるとします。 |-- bar `-- foo |-- type_A_1 |-- type_A_2 |-- type_B_1 |-- type_B_2 |-- type_B_xx |-- type_B_xx `-- something_else 私は次のコマンドを考えました print -l foo/*~{type_B*} で始まるものを除くすべての下にすべてを印刷しますが、そうではなく、fooの下にすべてを印刷します:foo type_B foo/type_A_1 foo/type_A_2 foo/type_B_1 foo/type_B_2 foo/type_B_xx foo/something_else 私もprint -l foo/*~type_B同じことを試してみました。 ~zshで例外ワイルドカードはどのように機能しますか?

3
bash globstarマッチング
私はこのディレクトリ構造を持っています: ~/tmp/globstar ɀ find dir -type f dir/file.ext dir/subdir1/file.ext dir/subdir2/file.ext そして、globstarBashでオプションを有効にすると、私は言うことができます: ~/tmp/globstar ɀ ls -1 dir/**/*.ext dir/subdir1/file.ext dir/subdir2/file.ext 私の質問は、なぜdir/file.extこのリストから除外されるのですか? Bashマニュアルはこれについて述べていglobstarます: 設定されている場合、ファイル名展開コンテキストで使用されるパターン「**」は、すべてのファイルとゼロ個以上のディレクトリとサブディレクトリに一致します。パターンの後に「/」が続く場合、ディレクトリとサブディレクトリのみが一致します。 この段落の「ゼロ」にdir/file.extは、含めるべき印象があります。うまく行かない場合を除きます。
17 bash  wildcards 

2
scpワイルドカードがzshで機能しない
zshに切り替えましたが、うまく機能しています。奇妙なことに、*ワイルドカードを使用してscpを実行しようとしても機能せず、bashにドロップする必要があります。以下の2番目のコマンドは正常に機能します。 なぜそうなるのか、それを修正する方法についてのアイデアはありますか? ~/dmp ⌚ 16:06:10 $ scp abc@123:/home/se/exports/201405091107/* . zsh: no matches found: root@uf3:/home/se/exports/201405091107/* ~/dmp ⌚ 16:06:53 $ bash sean@seanlaptop:~/dmp$ scp abc@123:/home/se/exports/201405091107/* .
17 zsh  wildcards 

2
`。[]。foo []`はbashで何をしますか?なぜ「..」と一致するのですか?
次を見てください: $ echo .[].aliases[] .. $ echo .[].foo[] .. $ echo .[].[] .. $ echo .[].xyz[] .. $ echo .xyz[].xyz[] .xyz[].xyz[] $ echo .xyz[].[] .xyz[].[] どうやらこれは何かをつかんでいるように見えますが、結果がどのように組み合わされるかはわかりません。私の理解で[]は、空の文字クラスです。もし直観的だとしたら 空の文字列のみに一致しました。この場合、bashはこのディレクトリ内で一致するものは何もないので、bashが完全に再現されることを期待しますが、..aliases(最初の例では) またはまったくない; この場合、bashが文字列全体を再現することも期待しています。 これは、GNU bashバージョン4.4.23(1)-releaseを使用しています。
16 bash  shell  wildcards 

2
適切な許可なしにアスタリスクを展開できません
誰かが私に次のことを説明できますか? $ ls -ld /temp/sit/build/ dr-xr-s--- 3 asdf qwer 4096 Jan 31 2012 /temp/sit/build/ $ ls -ld /temp/sit/build/* ls: /temp/sit/build/*: Permission denied したがって、ここではアスタリスクを使用できません。sudoコマンドで試してみましたが、「permission denied」ではなく「no such file」エラーが表示されます... sudo ls -l /temp/sit/build/* ls: /temp/sit/build/batch*: No such file or directory しかし、*を使用しないと、最終的に機能します sudo ls -l /temp/sit/build/ total 4 dr-xr-s--- 11 asdf qwer 4096 Oct …

4
拡張されていないアスタリスクによるエラーの回避
bashでは、次のようなforループをよく使用します for file in *.type; do sommecommand "$file"; done; に一致するすべてのファイルに対して操作を実行します*.type。作業ディレクトリにこの末尾のファイルが見つからない場合、アスタリスクは展開されず、通常、コマンドがファイルを見つけられなかったというエラーメッセージが表示されます。このエラーを回避するいくつかの方法をすぐに考えられます。ただし、条件を追加してもそれほどエレガントではないようです。これを達成するための短くてきれいな方法はありますか?
16 bash  wildcards  for 

2
bashの二重引用符はどのように一致(ペア)しますか?
を使用していGNU bash 4.3.48ます。単一のドル記号のみが異なる次の2つのコマンドを検討してください。 コマンド1: echo "(echo " * ")" コマンド2: echo "$(echo " * ")" それらの出力は、それぞれ (echo test.txt ppcg.sh ) そして * したがって、最初のケースで*は明らかにがグロブされます。つまり、最初の引用符は2番目と一緒にペアを形成し、3番目と4番目は別のペアを形成します。 2番目のケースで*はがグロブされず、出力にちょうど2つの余分なスペースがあります。1つはアスタリスクの前、もう1つは後です。つまり、2番目の引用符は3番目の引用符に、最初の引用符は4番目に続きます。 $()引用符が次の引用符と一致せず、代わりにネストされているという構造以外のケースはありますか?この動作は適切に文書化されていますか?はいの場合、対応する文書はどこにありますか


2
グロビングを使用する場合にのみrmをインタラクティブにできますか?(bash、zsh、またはその両方で)
たびに私rmシェルがグロブと少しでも可能性パターンが膨張し、私はそれが期待する以上のことがありますと一度に複数の項目、私はいつも追加することを忘れないようにしようとし-iたが、(もちろん)私は忘れ、誤って有益な何かを吹き飛ばすことができます。エイリアスを使用してこの問題を解決しようとする人もいますが、alias rm='rm -i'rmを常に対話型にするという考えは嫌い-fです。 私がやりたいのは、グロビングを使用rmする-iときにのみ使用し-f、もちろんオーバーライド-iすることrm -rf junkです。そのため、通常のでディレクトリ全体を吹き飛ばすことができます。 したがってrm *blah*、実際にはそうですrm -i *blah*がrm blah、入力したとおりに動作します。 異なるシェルでこれを達成する方法に違いがある場合、どちらか一方のみをカバーする回答よりもbash と zshの両方のメソッドを提供する回答を選択します。 注:私は実際にこれは必ずしも良いアイデアです確信していません。私はそれが可能かどうかを尋ねているだけです。これが馬鹿げた考えだと思うなら、あなたの意見の背後にある理由を聞いてとてもうれしいでしょうが、そのようなコメントを回答フィールドに投稿しないでください。本当の答えは、これを行う方法を教えてくれるか、それが不可能な理由を説明します(または、同様の結果を得るための代替方法を提供する可能性があります)。しかし、なぜこれが愚かであるかを私に伝えたい場合は、コメントとして投稿してください。結論に同意しなくても、理にかなったコメントを支持します。
15 bash  zsh  wildcards  rm 

2
GLOBIGNOREはどのように機能しますか?
bashのマニュアルページによると: GLOBIGNORE A colon-separated list of patterns defining the set of filenames to be ignored by pathname expansion. If a filename matched by a pathname expansion pattern also matches one of the patterns in GLOBIGNORE, it is removed from the list of matches. しかし実際には... $ bash --noprofile --norc bash-4.2$ touch …

3
`ls`と正規表現を使用したリスト
ファイル名の最後の文字と拡張子で終わるファイルをリストするにはどうすればよい.txtですか? 私が試してみましたls *+([[:digit:]]).txtが、これはのために真であるabc12.txtとabc2.txt。 しかし、私は取得する必要がありますabc2.txt。どうやってやるの? :digit:これを行う何らかの形式はありますか?
15 bash  wildcards 

3
bashのファイル名展開メカニズムからいくつかのファイルを除外するにはどうすればよいですか?
ルートディレクトリにubuntuファイルシステムディレクトリがあり、誤って何百ものファイルをルートディレクトリにコピーしました。 私は直感的にファイルシステムを除外してコピーされたファイルを削除しようとしました rm -rf !{bin,sbin,usr,opt,lib,var,etc,srv,libx32,lib64,run,boot,proc,sys,dev} ./. 動作しません。全体を削除しながらいくつかのディレクトリを除外する適切な方法は何ですか? 編集:何をすべきかを知らずに、ここでコマンドを実行しないでください!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.