質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.40%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

3回答

19346閲覧

ls使用時の正規表現について

albedo615

総合スコア14

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2020/06/05 08:06

編集2020/06/05 13:30

lsのみ使用した場合、ワイルドカードについての説明はあったのですがlsを使用したときの正規表現はどうなるのでしょうか?
grepでは検索条件に正規表現を入れることができますが・・・。

ファイルパスに正規表現を使用することってできますかね?

やりたいこと

foo.190101 foo.190102 ...
foo.200101 foo.200102 ...
(ファイル名fooに日付がついているもの、yymmddで表記)
これを月が2月から8月のものであり、日にちが1日のものを絞り込む。とした場合
日にちが1日の場合は ls -l *01で絞り込みできるのですが、
途中の2月~8月で絞り込む。というのをどうしたらいいのかと考えています。

知識が足りないため、lsでファイルパスを指定するときに正規表現を使用して検索できるか?と思って質問させてもらいました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ファイルパスに正規表現を使用することってできますかね?

lsは正規表現をサポートしていません。

そういうときこそ、パイプというものを使うのですよ。

たとえば、ファイル名が数字で始まるテキストファイルのみをリストアップしたい場合。

ls | egrep '^[0-9].*.txt'

ひとつひとつは限定的な機能しか持っていないツールをケースバイケースで組み合わせる。これがlinuxのコマンドラインでのオペレーションの基本です。そのノリに早く馴染みましょう。

投稿2020/06/05 08:18

KojiDoi

総合スコア13676

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ファイルパスに正規表現を使用することってできますかね?

ファイルパスに対して通常行える操作はグロブパターンと呼ばれ、正規表現とは異なるものです。

投稿2020/06/05 08:07

maisumakun

総合スコア145628

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/06/05 08:10

ワイルドカードも、このグロブパターンの1つです。
guest

0

ベストアンサー

lsのみ使用した場合、ワイルドカードについての説明はあったのですが

lsはワイルドカードを扱う機能がある」と思っているなら、認識を改めた方が良いです。

そもそもlsはワイルドカードを処理出来ません。ls -l foo*というコマンドをシェルで実行した場合に、fooで始まるファイル名のファイルの情報が出力されますが、これはlsfoo*を解釈しているわけじゃなくて、シェルがls起動時にls -l foo001 foo002 foo003のようにワイルドカードの無い形に変換してからlsを起動しています。
(ただし、Unix/Linuxの場合)

lsを使用したときの正規表現はどうなるのでしょうか?

lsと正規表現は全く関係ないです。

grepでは検索条件に正規表現を入れることができますが・・・。

ファイルパスに正規表現を使用することってできますかね?

やりたいことが明確になれば、lsに、正規表現を扱えるコマンド(grepもその1つ)を組み合わせて使うことで可能です。

投稿2020/06/05 10:51

otn

総合スコア85458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

albedo615

2020/06/05 13:28

ありがとうございます。勉強したてなので参考になります。 lsに正規表現を使用できるコマンドをパイプでつなげればいい、という簡単な話なんですが 課題の一環でls、ワイルドカード、正規表現を使ってファイルを検索する。というものをやっているため、回りくどい感じになっています。 foo.190101 foo.190102 ... foo.200101 foo.200102 ... (ファイル名fooに日付がついているもの、yymmddで表記) これを月が2月から8月のものであり、日にちが1日のものを絞り込む。とした場合 日にちが1日の場合は ls -l *01で絞り込みできるのですが、 途中の2月~8月で絞り込む。というのをどうしたらいいのかと考えています。 (もしかして新しい質問として再質問したほうが良さそう)
KojiDoi

2020/06/05 15:17

>lsに正規表現を使用できるコマンドをパイプでつなげればいい と理解できたのならそのように実践すればいいだけです。頑なにlsの中でワイルドカードだけでなんとかしようとこだわってしまうのは何か理由があるんですか。
otn

2020/06/05 23:01

> 途中の2月~8月で絞り込む。 *0[2-8] ですね。
albedo615

2020/06/06 12:25

ありがとうございます。 *0[2-8]01で解決できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問