の意味は何ですか?次のコマンドを記録しますか?
find /foo/path -name \?
ベストアンサー1
?
特殊文字パターンマッチング、単一文字に一致します。
/foo/path
したがって、このコマンドの意味は、サブディレクトリ内の名前が正確に1文字長であるすべてのファイルとディレクトリを見つけることです。
\?
シェルが実行されるのを防ぐために使用されます。ファイル名の生成。他のものを使用することができます引用メカニズム:
find /foo/path -name '?'
または:
find /foo/path -name "?"
?
ご注意くださいファイル名拡張パターン絶対一致しないため、スラッシュのために与えられたパターンも/
計算では無視されます。-name
デフォルト名()ファイル(A基本名パス名の最終ファイルまたは固有ファイル名。まだ一つあります。ファイル名、パス名のコンテキストでは、後にスラッシュが続く可能性があります):
$ mkdir a b
$ find a/ b/ -name a -o -name b\?
a/
出力のみa/
。
唯一の例外は、以下を参照しない/
実装です。//
//
/
$ find / ! -path / -prune -o -name \? -print
/
(POSIXの定義は、基本名については少し不明瞭です/
。//
///+
)
またはbusyboxで見つけることができます:
$ busybox find a/ b/ -name a -o -name b\?
b/
/
特定のパターンを使用しようとすると、-name
実装によって動作が異なります。
BSD find と heirloom find は式を false として扱い、何も出力しません。
$ find /tmp -name /tmp
$ echo "$?"
0
GNU find は次の警告メッセージを表示します。
$ find /tmp -name /tmp
find: warning: Unix filenames usually don't contain slashes (though pathnames do).
That means that '-name ‘/tmp’' will probably evaluate to false
all the time on this system. You might find the '-wholename' test more useful,
or perhaps '-samefile'. Alternatively, if you are using GNU grep,
you could use 'find ... -print0 | grep -FzZ ‘/tmp’'.
戻りコードは0です。