こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

特定のファイル名を表示したい

lsコマンド等を使用して、下記のようなファイル一覧の中から
testml1
testml2
というものだけ抽出したいのですが、良い方法はありますでしょうか?
目的は、シェルスクリプトで、qmailのメーリングリスト一覧を作りたい
のです。
よろしくお願いします。

.qmail-testml1
.qmail-testml1-owner
.qmail-testml1-request
.qmail-testml1-approval
.qmail-testml1-lists
.qmail-testml2
.qmail-testml2-owner
.qmail-testml2-approval
.qmail-testml2-lists

以上、よろしくお願いします。

投稿日時 - 2005-08-25 11:23:41

QNo.1603462

困ってます

質問者が選んだベストアンサー

「.(ドット)」のないものというこであれば単純に。
 $ ls | grep -v "\."
でどうでしょうか。

grep "\." で「ドットを含むもの」なので、-vオプションで結果を反転してます。

投稿日時 - 2005-08-25 19:14:23

お礼

ありがとうございます。
これで先に進めそうです。

投稿日時 - 2005-08-26 09:18:00

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

補足ありがとうございます。申し訳ありませんがが、[2]の内容によくわからない点があったので、もういちど教えてください。

(1) 抽出するのは?
> ML名、ML名-owner、ML名-approval、ML名-listsの4種類のファイルが存在する
とのことですが、抽出するのはML名のファイルだけですか。それとも、他にも種類があって、そこからこの4種類を抽出するのでしょうか?

(2)ML名に使用される文字は?
半角の数字とアルファベットのみでいいですか?ハイフン、アンダースコアなどは含まれませんか?

とりあえず、抽出するのが".qmail-********"で*が半角の英数字のみだとするとこうなります。

 $ ls -a | grep -E "^\.qmail-[0-9A-Za-z]+$"

もうすこし具体的な例があると助かります。

投稿日時 - 2005-08-25 16:37:45

補足

ありがとうございます。
私が、違うフォルダを見ていたようですので、訂正させてもらいます。
(qmailではなく、majordomoのフォルダを見るべきでした)

抽出条件
[1]ファイル名は必ず"ML名-"で始まる
[2][1]の後には、ML名、ML名.config、ML名.info、ML名.introなど
7種類のファイルが存在するが、ML名だけを抽出したい。
[3][2]の後にはどんな文字も続かない

ということで、
(1)抽出するのは?
ML名だけです。
(2)ML名に使用される文字は?
半角の英数、ハイフン、アンダースコアは含まれると思います。

「.」が含まれないファイルを抽出できればもっと簡単になりそうですが、
方法が分かりません。

以上よろしくお願いします。

投稿日時 - 2005-08-25 17:55:18

qmailはよく知らないので自信ないですが、御質問から次の条件で抽出すると判断しました。

抽出条件:
[1] ファイル名は必ず".qmail-testml"で始まる
[2] [1]の後には数字が入る(必須だが桁数は不定)
[3] [2]の数字の後にはどんな文字も続かない

コマンドは次のようになります(Vine 3.1で確認)。
 $ ls -a |grep -E "^\.qmail-testml[0-9]+$"

条件が違うとやり方も変わってきますので、その時は補足してください。

投稿日時 - 2005-08-25 13:51:49

補足

抽出条件は、
[1]ファイル名は必ず".qmail-"で始まる
[2][1]の後には、ML名、ML名-owner、ML名-approval、ML名-listsの4種類のファイルが存在
[3][2]の後にはどんな文字も続かない

です。

もう少しアドバイスいただけると助かります。

投稿日時 - 2005-08-25 14:41:08

ANo.2

力業で
ls | grep -v owner | grep -v request | grep -v lists
とか。
(ML名に lists, owner, request が含まれてるのがあるとアウトですけど)

投稿日時 - 2005-08-25 11:58:43

ANo.1

ls .qmail-* | awk -F- '{print $2}' | sort | uniq
ではいかがでしょうか。

投稿日時 - 2005-08-25 11:30:06

あなたにオススメの質問