lsを使いたいですか? Bash変数のオプション。
同じタスクを実行するためにスクリプトをどのように取得できますかls -lt foobar_??????.log
?
$ cat foobar_ls.sh
#!/bin/bash
FOOBAR_LIST="foobar_??????.log"
ls -lt "$FOOBAR_LIST"
これはプロンプトバージョンです:
$ls -lt foobar_??????.log
-rw-r--r-- 1 foobar foobiz 0 Nov 1 14:58 foobar_000003.log
-rw-r--r-- 1 foobar foobiz 0 Nov 1 14:58 foobar_000002.log
-rw-r--r-- 1 foobar foobiz 0 Nov 1 14:58 foobar_000001.log
これは私のバージョンのスクリプトです。
$ ./foobar_ls.sh
ls: cannot access foobar_??????.log: No such file or directory
ベストアンサー1
?
関数ではなく、ls
シェルの関数です。ファイル名拡張子またはワイルドカード拡張またはパターンマッチングワイルドカード。ls
一致するファイル名のリストを取得するには、シェルでワイルドカード拡張を実行する必要があります。
変数にワイルドカード文字を含む文字列があり、そのワイルドカード文字を一致するファイル名に拡張するには、変数の置換を引用符なしで残します。これは「split+glob」演算子です。値はスペースで区切られた部分に分割され、各部分は一致するファイル名のリストに置き換えられますが、ファイル名と一致しない部分は変更されません。
FOOBAR_LIST="foobar_??????.log"
ls -lt $FOOBAR_LIST