Linux コマンドは、TEMP で始まるが 2 桁の数字で終わらないすべてのファイルを返します。

Linux コマンドは、TEMP で始まるが 2 桁の数字で終わらないすべてのファイルを返します。

TEMPで始まるが2桁の数字で終わらないすべてのファイルを返すLinuxコマンドは何ですか?

私はこれが次のようになるべきだと思います。

ls -l TEMP*[!0-9][!0-9]

しかし、私の検索結果にいくつかの結果がありません。

答え1

GNUとほとんどの最新BSDの場合find

find . -maxdepth 1 -type f -name 'TEMP*' ! -name "*[0-9][0-9]"

POSIX的に:

find . ! -name . -prune  -type f -name 'TEMP*' ! -name "*[0-9][0-9]"

kshまたはbash -O extglobまたはzsh -o kshglob

ls -ld TEMP*@([^0-9]?|?[^0-9]) [T]EMP TEMP?

答え2

シェルがある場合ksh、またはbashオプションextglobshopt -s extglob有効)がある場合

ls -d TEMP!(*[0-9][0-9])

動作する必要があります。再帰的に検索してglobstarを有効にするには(set -o globstarin ksh93shopt -s globstarin bash)、次のことができる必要があります。

ls -d -- **/TEMP!(*[0-9][0-9])

(隠しディレクトリはデフォルトでは参照されません。)

例えば、

$ ls -d -- **/TEMP*
TEMP12345  TEMP123ab  TEMPabc12  TEMPabcde  tests/TEMP12345  tests/TEMP123ab  tests/TEMPabc12  tests/TEMPabcde

それから

$ ls -d -- **/TEMP!(*[0-9][0-9])
TEMP123ab  TEMPabcde  tests/TEMP123ab  tests/TEMPabcde

以下と同じzsh

setopt extendedglob
ls -d -- **/TEMP^*[0-9][0-9]

答え3

あなたの考えは大丈夫です。 temp で始まり、2 つの数字で終わらないすべてを見つけます。残念ながら、あなたは文法的なエラーを犯したようです。交換する必要があります! by ^.これでtemp*99とtemp*!ファイルを検索しています。

関連情報