• 締切済み

ls であるファイル以外を表示したい

RH7.3です。 あるディレクトリ配下に多数のファイルがそんざいするのですが、 そのディレクトリで「ls」をしたときに"access_log"というファイル以外を表示させたいです。  ls [!a]* でやったのですが、access_logの他に access_log.1などがありそれも含まれてしまいます。 何かいい方法はないでしょうか? できれば、ls コマンドひとつで処理したいと思っています。(正規表現で対応?)

noname#41382
noname#41382

みんなの回答

  • damejan
  • ベストアンサー率30% (58/192)
回答No.4

ls a*[0-9]* [!a]* でどうでしょう。 先頭文字がaで始まり数字を含むファイルと、先頭文字がaではないファイルを表示します。「access1_log」というファイルがあってもちゃんと表示されますよ。でも、「access_log.a」なんかは表示されませんけど。

noname#41382
質問者

お礼

ご回答ありがとうございます。 確かに数字の入ったaccess_logは表示できるようになりましたが、 abcといったファイルなんかは表示できません..(ToT) できれば確実に"access_log以外"といった感じで指定できればいいのですが...。

noname#41382
質問者

補足

すみません。 -I オプションでできました。(ls (fileutils) 4.1) ---- man抜粋 -----  -I, --ignore=pattern   コマンドラインで与えられない限り、シェル パ ター ン   pattern (注:正規表現とは異なる) にマッチする名前の   ファイルはリスト表示しない 。 ですが、正規表現で実現する方法も知りたいので、もう少し締め切らずにまってみます。 みなさんありがとうございました!

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.3

> ちょっと障害が出てまして > access_logへのアクセス(ls含む)の処理中にエラーが発生してしまうんです。 そりゃあなた,クラックされてませんか? HDDやファイルシステムの障害かもしれませんが,それを調べる目的なら,やるべきなのは ls じゃなくて fsck とかじゃないでしょうか?

noname#41382
質問者

お礼

アドバイスありがとうございます。 >そりゃあなた,クラックされてませんか? > 完全に否定はできませんが...。 ただ、外部はもちろん、評価用に内部の一部にしか接続していません。 元々このサーバはファイアウォール用の専用OSなので、既定値では外部からは接続できないようになっているようです。 この状況でクラックとはちょっと考えにくいです。 >ls じゃなくて fsck とかじゃないでしょうか? > だと思います。 ですが、今あるプロセスが動いていて落とせないんです... mountを解除せずにfsckを行う方法ってないですよね? で、まずはls(なんで"まず"かというと自分が初心者だからです...^ ^)の結果をと思い 今件が気になったので投稿しました。 解決策はいくらでもあると思いますが、とりあえず知識として欲しかったので... あえて元投稿にいきさつ等を書かなかったのは、単純にこのlsの仕方を教えて頂くためでした。 よろしくお願いいたします。

noname#41382
質問者

補足

すみません、#3お礼で誤りがありました。 >元々このサーバはファイアウォール用の専用OSなので、 > ファイアウォール用にカスタマイズされたRH7.3なので ということでした。 カーネル等は全てRH7.3のままのようです。

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.2

grep -v | access_log に渡すだけでいいんですが, > ls コマンドひとつで処理したいと思っています。 なんで? もったいない…

noname#41382
質問者

補足

ご回答ありがとうございます。 >なんで? もったいない… > ちょっと障害が出てまして access_logへのアクセス(ls含む)の処理中にエラーが発生してしまうんです。 なので、ls結果をパイプで渡してもその前でエラーがでてしまいます。 そこで、lsでaccess_log以外が問題ないかを試そうと思っていました。 ls b* ls c*等個別には一応やったのですが、できれば一度に確認できればと思い投稿しました。 よろしくお願いいたします。

  • blue_leo
  • ベストアンサー率22% (541/2399)
回答No.1

質問を読むと頭がaをはねればいいとも受け取れますが、それならば、 ls [0-9]* [b-z]* でOKではないでしょうか?

noname#41382
質問者

補足

ご回答ありがとうございます。 >質問を読むと頭がaをはねればいいとも受け取れますが > すみません、わかりづらかったです。 access_logは表示したくないけど、access_log.1は表示したいんです。 access_log.1の他に先頭にaがつくファイルがあるので、 access_logだけ といった指定が出来ればと思っています。 よろしくお願いいたします。

関連するQ&A

  • ls * で表示可能なファイル数はいくつ?

    lsコマンドでディレクトリのファイルをリスト化するのに ls *ではファイル数が多すぎてエラーになります。 lsコマンドで表示可能なファイル数はいくつでしょうか。

  • 「*.txt」以外の全てのディレクトリ・ファイルを削除したい(Bシェルにて)

    rm -rコマンドを使用して、「*.txt」以外の全てのディレクトリ・ファイルを削除したいのですが、正規表現の使い方が分かりません(それ以外を対象にするという方法が分かりません)。 またできれば、「*.txt」以外のディレクトリ・ファイルが存在しなくてもリターンコードは0が返ってきてほしいです。 どのようにすれば良いのでしょうか? 環境は、SolarisのBシェルです。

  • サブディレクトリも含めて最新のファイルを調べる

    Linux 上のあるディレクトリ配下に存在するすべてのファイルの中で(サブディレクトリ配下も含めて) 更新日時が最新のファイルを抽出したいのですが やり方をご存知であれば教えてください。 ディレクトリが一つだけ or 対象が特定できるなら ls -lrt とかで分かりますが 再帰的にすべてのサブディレクトリを対象としたいのです。 できれば1回のコマンド(ワンライナー)で実行できるとありがたいですが、 それはさすがに大変な気がしますので、 あくまでできればということで。。

  • bshでのls結果出力内容が途中で途切れる

    初めて質問いたします。 皆さま、どうぞ宜しくお願い致します。 OSはHP-UXで、とあるディレクトリ配下の ls 結果をリダイレクトでファイルに出力させるbshでの話です。 この出力結果ファイルですが、ls -lR で指定したディレクトリ配下すべてを出力する時と、途中までのみ出力される現象が発生しました。 ●シェルのログファイルでは、lsコマンドの実行結果(戻り値)はいずれもゼロ(正常) ●シェルをキックした際、終了すると画面には何らかのメッセージ出力なくプロンプトが表示 ●同じコマンドを手で発行した場合、ファイルには常にls結果が全出力される ●シェルはrootでキック ●ls対象ディレクトリ、ファイルのオーナーはrootではない ●ls対象ディレクトリ、ファイルのパーミッションは全て755 ●ls結果ファイルの出力先ディレクトリのディスク残容量は約32G ●ls結果ファイルのサイズは、全て漏れなく出力された場合は約19M、途中まで出力の場合は約4M 私自身、SHELLの経験値が浅く、基礎的な話でしたらお恥ずかしい限りです。 周囲の経験者の方々にも伺いましたが、私の説明不備でしょうか、解答がみつかりません。 こちらに既存で類似質問がなく、WEBで調べましたがわからず質問させて頂きました。 実は、本日(6/2)の昼過ぎに取引先へ原因報告を求められ、焦っております。 以上の様な状況です。 ご経験のおありな方をはじめ皆さま、どうか御教示ください。 宜しくお願い致します。

  • lsでのファイル名・パスのフルパス取得

    環境:Solaris10 lsコマンドでディレクトリ、ファイル名の一覧を取得しようとしています。 条件としては 1.対象は全てのディレクトリ・ファイル(ls -R) 2.実行結果はアクセス権・所有者の情報も含む(ls -lの結果のような) 3.ディレクトリ・ファイル名ともにフルパスで表示 この上記3点を満たそうとして、 ls -dlR / と実行してみましたが、この場合Rスイッチが有効になりませんでした。 OS標準コマンドでこの3点を満たすことは出来るのでしょうか?

  • lsで表示されるファイルにアクセスできない

    linuxを使い始めて間もないシロウトです 別のパソコン(OSはDebianだと聞きました)にUSBハードディスクを繋いで データをコピーしてもらい(旅行のビデオ、AVI形式)持ち帰って 自分のパソコン(OSはUbuntu8.04)に接続し視聴しようとしましたが ファイルブラウザに一部のファイルがありませんでした 他の表示されるデータは正常に視聴可能です コピーしてくれた友人に教えて貰い、コマンド・ライン端末から lsコマンドで確認すると、その一覧にはファイルブラウザで 表示されなかったファイルが存在します 「権限情報がおかしいのかも?」とのことで「sudo chmod」や 「sudo chown」を試してみましたが「No such file or directory」と エラーが発生します 「ls -la」としてみるとアクセスできないファイル名の前には「-?????????」と表示されます(アクセスできるファイルの前には 「-rwxr-xr-x」) なんとか復旧することはできないでしょうか? 友人は遠方に住んでいるため、おいそれと再度ファイルをコピーして もらうことができません また、インターネットの回線が遅いため、ネット経由でファイルを 受け取ることも現実的ではありません よろしくお願いします

  • aから始まるファイルだけlsしたい。

    packages(FreeBSD)の中から、Apacheを探したいのですが、wwwディレクトリの中はたくさんありすぎて、一度に表示できません。そこで、aから始まるファイルだけをlsコマンドで表示したいのですが、こういう場合、どういったオプションをつけるとよいのでしょうか?なにかいい方法があったら教えてください。

  • 【ftp】lsで表示されているファイルをgetしたがエラーとなった。

    はじめましてよろしくお願いします。 lsで表示されるファイルをgetしようとして、 ファイルが無いといったエラーが出てダウンロードできません。 ファイル容量が10MB近くあるのが原因かなーとか思ったのですが、どうなんでしょうか?? ちなみに、同じディレクトリにある別ファイル(容量5kbくらい)は正常にダウンロードできました。 具体的には以下です。 -------------- ftp> get 1.log 200 PORT command successful. 550 1.log: No such file or directory. ftp> --------------

  • ディスクの使用サイズ表示の違い

    UNIXコマンドであるディレクトリ配下のディスクの使用サイズを表示させようと思っています。 ・du -k ・find -lsでファイルサイズを足す(ファイル、ディレクトリ、シンボリックリンクを含む) ・ls -Rでファイルサイズを足す(ファイル、ディレクトリ、シンボリックリンクを含む) 上記3つで行いましたが、全て違う結果になりました。 なぜこの様な事になるのでしょうか? よろしくお願いいたします。

  • findの結果をlsで詳細表示

    はじめまして。 Linux初心者です。 カレントディレクトリ以下のディレクトリやファイルの一覧を詳細表示するには「find ./ | xargs ls -lF」などとすると思いますが xargsを使用せずに「find ./ | ls -lF」とすると、なぜNGなのでしょうか。「xargs」の意味を調べると、 (1) 標準入力から空白か改行で区切られた文字列群を読み込む。 (2) xargsの引数のコマンドの後ろに、標準入力から受け取った文字列群を付け足して、そのコマンドを実行する。 とありました。上記の説明で「xargs」を付けることによる効果はわかるのですが、ls以外のコマンドを使用する際にもfindと組み合わせる際には、 すべてのコマンドで「xargs」を使用しなければいけないのでしょうか。 lsの結果をmoreする際などには、「ls | more」で良いと思うのですが、 「ls | xargs more」としない理由がわかりません。 どなたかわかりやすく教えて頂ければ幸いです。 よろしくお願いします。