機能

機能

10001たとえば、命名などで複数のディレクトリがある場合、vsを10025使用する理由はありますか?ls 1*/fools 100??/foo

25を超えているので、主に速度に違いがあるのか​​と思います。

私は2つの使用法の違いを知っています。アスタリスクは、より長いファイル名と一致します(例:)10001.backup。しかし、私のルールを満たさないファイルがないとしましょう。後ろに違いはありますか?

答え1

機能

彼らの意味は異なります。これスター0から無限大までの文字を一致させます。これ疑問符正確に1文字に一致します。

上記の参考資料から:

*文字はワイルドカードのファイル名拡張のための「ワイルドカード」として機能します。

これ?文字は、ワイルドカードのファイル名拡張子の単一文字「ワイルドカード」として機能します。

パフォーマンス

tl;dr: パフォーマンスには顕著な違いはありません。

私はそれぞれ単一の文字で名前が付けられた36のサブディレクトリを含むディレクトリを使用してパフォーマンスをテストしました。サブディレクトリには合計約70,000のファイルがあります。私は以下をテストしました。

$ time ls ?/* -d >/dev/null
$ time ls */* -d >/dev/null

私は各コマンドを10回交互に使用しました。以下はreal秒単位の結果です。

?       *
0.318   0.326
0.355   0.212
0.291   0.351
0.291   0.265
0.287   0.283
0.362   0.23
0.248   0.33
0.286   0.283
0.293   0.351
0.233   0.352

統計分析(ペアt検定、両側検定)の後、2つの値間の性能差は見られなかった(p値= 0.95)。

制度法

編集:より多くのサンプル

私はそれぞれ200個のサンプルを使用して上記の分析を繰り返し、再びテストを交互に行いました。

$ for i in {1..200}; do time (ls */* -d >/dev/null) 2>> /tmp/time_asterisk; time (ls ?/* -d >/dev/null) 2>> /tmp/time_question_mark; done

これは生データです。そして*。今回も有意差(p値= 0.55)が見つからず、各テストで分布がより似ているようです。

図2

答え2

??globが存在するか、他の長いファイルが存在する可能性がある場合、これはより具体的です*

% touch 10001 100dalmations
% ls 100??
10001
% ls 100*
10001  100dalmations
% 

関連情報