シェルコマンドの質問です。


find で取得したファイル群をタイムスタンプでソート表示するためにはどのようにすればよいか(パイプでなにかに渡すとか)教えてください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/12/17 23:06:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:zzz_1980 No.2

回答回数492ベストアンサー獲得回数64

ポイント50pt

ls が sort 機能を持っているので、

time modified なら

ls -tl `find . -name "x*" -type f -print`

time access なら

ls -ul `find . -name "x*" -type f -print`

time create なら

ls -Ul `find . -name "x*" -type f -print`

find の引数(-name "x*" -type f)は適宜書き換えてください。

-type f をつけているのは、ディレクトリをはねるため。

id:masashi0316

いずれも、ばっちりです。

ありがとうございました。

2008/12/17 23:06:16

その他の回答1件)

id:takerudayo No.1

回答回数165ベストアンサー獲得回数29

ポイント50pt

パイプでなにかに渡すとか

その考え方で良いと思います。

以下どちらでもできます。

find / -name test*.log | ls -t

find / -name test*.log -exec ls -t {}\;


findコマンドのパラメータについては、

Manpage of FIND

lsコマンドのパラメータについては、

Manpage of LS

おまけで、パイプなどの処理がわかりやすく書いてあるページ

シェルスクリプト・トレーニング 第8回 findコマンドで“検索プラスアルファ”の操作 : デスクトップ - TECH WORLD

id:masashi0316

2つめのでOKでした。

おまけも読んでみますね。

ありがとうございました。

2008/12/17 23:06:13
id:zzz_1980 No.2

回答回数492ベストアンサー獲得回数64ここでベストアンサー

ポイント50pt

ls が sort 機能を持っているので、

time modified なら

ls -tl `find . -name "x*" -type f -print`

time access なら

ls -ul `find . -name "x*" -type f -print`

time create なら

ls -Ul `find . -name "x*" -type f -print`

find の引数(-name "x*" -type f)は適宜書き換えてください。

-type f をつけているのは、ディレクトリをはねるため。

id:masashi0316

いずれも、ばっちりです。

ありがとうございました。

2008/12/17 23:06:16
  • id:zzz_1980
    すいませんが、後学のために、
    find / -name test*.log -exec ls -t {} \;
    が動いたOS(distribution?)を教えていただけるでしょうか。
    自分の環境ではうまく動かないので、なぜだろうと。
  • id:masashi0316
    uname -a
    Linux **** 2.6.18-92.1.10.el5 #1 SMP Tue Aug 5 07:41:53 EDT 2008 i686 i686 i386 GNU/Linux

    cat /etc/redhat-release
    CentOS release 5.2 (Final)

    実際に実行したコマンド
    find . -name "*.cgi" -exec ls -tl {} \;

    以上です~
  • id:masashi0316
    あ、よくみたら、うまくソートされてないみたいです。
    カレントを最下層のディレクトリにして
    find . -name "*.cgi" -exec ls -tl {} \;

    ls -tl
    で比べてみたら違う結果になりました。
    すみません。
  • id:masashi0316
    さらに、蛇足ですけど、考え方はあってるわけで、
    -exec って使ったことなかったんでよくわからんのですが、
    find . -name "*.html" | xargs ls -tl
    とすることで、できますね。
  • id:hujikojp
    find -name "*.cgi" -exec ls -tl {} +
    でもokですよ。
    http://d.hatena.ne.jp/hujikojp/20080220/xargs


  • id:zzz_1980
    masashi0316さん、
    ためしていただいてありがとうございます。
    hujikojpさん、
    おもしろい情報をおしえていただきありがとうございます。
    exec の + は、
    FreeBSD7STABLE man find に記述あり。
    opensolaris10 man page には記述ないがちゃんと動く。
    でした。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません