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

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

6
ワイルドカード展開から最初の一致を取得するにはどうすればよいですか?
BashやZshなどのシェルは、ワイルドカードを引数に展開します。引数はパターンに一致する数だけです。 $ echo *.txt 1.txt 2.txt 3.txt しかし、すべての一致ではなく、最初の一致のみを返したい場合はどうすればよいですか? $ echo *.txt 1.txt シェル固有のソリューションは気にしませんが、ファイル名の空白に対応するソリューションが欲しいです。
38 shell  wildcards 

4
[0-9]、[[:digit:]]と\ dの違い
で正規表現上のWikipediaの記事、それがいるようです[[:digit:]]= [0-9]= \d。 それらが等しくない状況は何ですか?違いはなんですか? いくつかの調査の後、1つの違いはブラケット式[:expr:]がロケールに依存していることだと思います。


10
すべてのサブディレクトリにディレクトリを作成するにはどうすればよいですか?
次のようなディレクトリ構造があるとします。 $ [〜/ practice] ls あいうえお/ 今、私tmp1はすべてのサブディレクトリにディレクトリを作成したいので、practiceこれを行います: $ [〜/ practice] mkdir * / tmp1 mkdir:ディレクトリ `* / tmp1 'を作成できません:そのようなファイルまたはディレクトリはありません 次に、-pスイッチを試し*て、サブディレクトリという名前のディレクトリになりますtmp1 $ [〜/ practice] mkdir -p * / tmp1 $ [〜/ practice] ls */ あいうえお/ -pスイッチの使用は、存在しない複数のディレクトリを作成することです。私はちょうどそれが役立つかもしれないと思った。 tmp1すべてのサブディレクトリに一度に作成するにはどうすればよいですか? これを行うことができるならば、どのように私はそれを作成するために拡張しない\tmp1、\tmp2、\tmp3で\a、\bと\c一度に? 編集:私は、ディレクトリは、シンプルで順番に、同様である必要はありませんことを言及逃したa、b、cなど、および作成するディレクトリは次のように、必ずしもではありませんtmp1、tmp2。 $ [〜/ practice] ls 犬/猫/ラット/ それらの中で、私は次のようなものを持ちたいです $ [〜/ practice] ls * 犬: …


1
引用符内のワイルドカード
これは簡単なことですが、私の記憶では、シェルスクリプトで二重引用符を使用すると、グロビングと変数を拡張できます。 しかし、次のコードでは: #!/bin/sh echo *.sh echo "*.sh" echo '*.sh' echo $LANG echo "$LANG" echo '$LANG' 私はこの結果を得ます: bob.sh redeployJboss.sh *.sh *.sh en_US.utf8 en_US.utf8 $LANG それで、シングルクォートはグロブと変数展開を防ぎますが、ダブルクォートは変数展開のみを許可し、グロビングはできませんか? 引用パターンでグロブできますか?

2
パターンに一致するファイルを削除する
ファイル名に数字が含まれ、その後に「x」、数字が少なくとも2回含まれるすべてのサブディレクトリ内のすべてのファイルを再帰的に削除する必要があります。 例: これらのファイルを削除したい: 'aaa-12x123-123x12.jpg' 'aaa-12x12-123x12-12x123.jpg' しかし、私はこれらのファイルを削除したくありません: 'aaa.jpg' 'aaa-12x12.jpg' 'aaaxaaa-123x123.jpg' 'aaaxaaa-aaaxaaa.jpg' どうすればできますか(bashシェルから)
32 bash  files  find  wildcards 

2
find(1):いくつかのファイル名で失敗するスターワイルドカードはどのように実装されますか?
ファイル名がUTF-8のファイルシステムでは、ファイル名に誤りがあります。それはD�sinstaller、として表示されます。zsh:による実際の名前 D$'\351'sinstaller、Latin1はDésinstaller、それ自体は「アンインストール」のフランス語の野barです。Zshはそれとは一致しません[[ $file =~ '^.*$' ]]が、グロビングと一致*します。これは私が期待する動作です。 今でも、実行時にそれを見つけることを期待しています。find . -name '*'実際のところ、ファイル名がこのテストに失敗することは決してありません。ただし、LANG=en_US.utf8では、ファイルは表示されず、動作するように設定LANG=C(またはen_US、または'')する必要があります。 質問: 背後にある実装とは何ですか?また、その結果をどのように予測できましたか? 情報:Arch Linux 3.14.37-1-lts、find(GNU findutils)4.4.2

10
特別な最初の文字を含むファイル名の処理(例:♫)
最近、名前が文字「character」で始まるファイルに出会いました。このファイルをコピーしてに送りffmpeg、ターミナルで他のさまざまな方法で参照したかったのです。私は通常、奇妙なファイル名をオートコンプリートしますが、最初の文字を入力することさえできないため、これは失敗します。 コピーアンドペースト操作を実行するためにマウスに切り替えたくありません。考えられるシナリオのために、大量のコードを記憶したくありません。私のアドホックな解決策は、問題のキャラクターに切り替えvim、貼り付け!ls、コピーしてから、終了してターミナルに貼り付けることでした。これは機能しましたが、非常に恐ろしいです。 そのようなシナリオに対処する簡単な方法はありますか? 注:物事を変更する場合、私は魚の殻を使用しています。

8
スクリプトを実行するために、パターンに一致するファイルがあるかどうかをテストします
if特定のパターンに一致するファイルがあるかどうかをテストするステートメントを作成しようとしています。ディレクトリにテキストファイルがある場合、指定されたスクリプトを実行する必要があります。 現在の私のコード: if [ -f /*.txt ]; then ./script fi いくつかのアイデアを教えてください。.txtディレクトリ内にある場合にのみスクリプトを実行します。



5
数値順序付きグローブ
私はディレクトリにこのpdfファイルのリストを持っています: c0.pdf c12.pdf c15.pdf c18.pdf c20.pdf c4.pdf c7.pdf c10.pdf c13.pdf c16.pdf c19.pdf c2.pdf c5.pdf c8.pdf c11.pdf c14.pdf c17.pdf c1.pdf c3.pdf c6.pdf c9.pdf 私はゴーストスクリプトを使用してこれらを数値順に連結します(これに似ています): gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf *.pdf ただし、シェルの展開順序は、数字の自然な順序ではなく、アルファベット順を再現します。 $ for f in *.pdf; do echo $f; done c0.pdf c10.pdf c11.pdf c12.pdf c13.pdf c14.pdf c15.pdf c16.pdf c17.pdf …



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