ファイル名を一致させるにはabc_NNN.xyz
?ディレクトリの内容です
[root@ tmp]# ls -ltr
total 0
-rw-r--r--. 1 root root 0 Jan 3 00:42 abc_123.xyz
-rw-r--r--. 1 root root 0 Jan 3 00:42 abc_234.xyz
-rw-r--r--. 1 root root 0 Jan 3 00:42 abc_345.xyz
-rw-r--r--. 1 root root 0 Jan 3 00:43 abc_def_123.xyz
-rw-r--r--. 1 root root 0 Jan 3 00:44 abc_def_234.xyz
-rw-r--r--. 1 root root 0 Jan 3 00:44 abc_def_345.xyz
-rw-r--r--. 1 root root 0 Jan 3 01:57 abc_123_123.xyz
-rw-r--r--. 1 root root 0 Jan 3 01:57 abc_234_234.xyz
-rw-r--r--. 1 root root 0 Jan 3 01:57 abc_345_345.xyz
これは私にとって効果的です
[root@ tmp]# ls -ltr abc_[0-9][0-9][0-9].xyz
-rw-r--r--. 1 root root 0 Jan 3 00:42 abc_123.xyz
-rw-r--r--. 1 root root 0 Jan 3 00:42 abc_234.xyz
-rw-r--r--. 1 root root 0 Jan 3 00:42 abc_345.xyz
問題は、実際のシナリオでは一致する必要があるため、abc_NNNNNNNNN.xyz
表現が大きすぎるということです。私は似たようなものを探していますabc_[0-9]{3}.xyz
。abc_[0-9]+3.xyz
(明らかにこれはうまくいきません)
ベストアンサー1
リストされた元のより簡単な例の場合にabc_[0-9]*.xyz
機能します。明らかに、これは数値以外のものと一致しますが、リストされdef
たファイルは除外されます。この場合、最初の下線は数字の後の最初の文字ではないためです。
より複雑な例では、find
実際に正規表現を使用できるように展開する必要があるときです。
$ ls
abc_123_123.xyz abc_123.xyz abc_234_234.xyz abc_234.xyz abc_345_345.xyz abc_345.xyz abc_def_123.xyz abc_def_234.xyz abc_def_345.xyz
$ find . -regex '\./abc_[0-9]+\.xyz'
./abc_345.xyz
./abc_234.xyz
./abc_123.xyz
これはGNUの場合であり、find
他のバリエーションはわずかに異なる場合があります。