名前(拡張子を除く)が3より大きいPDFファイルを探したいです。
$ find ~ -iregex ".{3,}/.pdf"
何も返さないけど
$ find ~ -iregex ".+/.pdf"
働く
このバリエーションを有効にするには{3,}
?
ベストアンサー1
ここでは、標準のワイルドカードを使用する方が簡単です。
find ~ -name '*???.[pP][dD][fF]'
またはいくつかの実装を介してfind
(サポートされている実装-regex
もサポート-iname
):
find ~ -iname '*???.pdf'
代わりに、文字数に関係なく利用可能な場所3
に戻すことをお勧めします(参照-iregex
@Stephen Kittの返信)または以下を使用またはglobすることができzsh
ますksh93
。
zsh
:set -o extendedglob # best in ~/.zshrc printf '%s\n' ~/**/?(#c3,).(#i)pdf(D)
(
(D)
隠しファイルと次の隠しディレクトリにあるファイルを考えてみてくださいfind
)(#cx,y)
zsh
正規表現に対応するワイルドカードです。{x,y}
(#i)
大文字と小文字を区別しない場合?
単一文字標準ワイルドカード (例: regexp.
)**/
:すべてのレベルサブディレクトリ(レベル0を含む)
ksh93
:FIGNORE='@(.|..)' # to consider hidden files set -o globstar printf '%s\n' **/{3,}(?).~(i:pdf)
@(x|y)
:regexpに似た拡張kshワイルドカード演算子です(x|y)
。FIGNORE
:グローバルに無視されるファイルを制御する特殊変数。一度設定すると、隠しファイルは通常無視されますが、まだ存在するディレクトリエントリを無視しようとします.
。..
{x,y}(z)
ksh93
regexpと同じですz{x,y}
。~(i:...)
:大文字と小文字を区別しない一致です。
Globはソートされたリストを取得し(glob修飾子を使用してfind
ソートを無効にするか、他のソート基準を使用できます)、ファイル名に有効な形式を形成しないバイトシーケンスを含む場合でも、いくつかの追加の利点がありますあります。文字操作(UTF-8文字セットを使用するロケールでは、この方法ではaを非文字として報告できないため、正規表現、ワイルドカード、またはGNUと一致しません。zsh
oN
find
$'St\xE9phane Chazelas - CV.pdf
\xE9
.
?
*
find