• ベストアンサー

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

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

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.3

find $DIR -type f | xargs ls -l --time-style=long-iso | sort -k 6,7 | tail -1 でどうでしょう。ソートキーは、ls のデフォルトオプションによってずれるかもしれないので、見て確認してください。 find に -mtime オプションを追加することで調べるファイルを減らすと良いかと。

sana_7
質問者

お礼

ありがとうございます。見事にワンライナーでした。

その他の回答 (2)

回答No.2

かなり泥臭いやり方ですが、find . -ls 等でまずリストを出して日付順にソートしてあげるのが第一感です。それくらいならパイプは使いますが、1回の実行で可能だと思います。 ただ、日をまたいだり、月をまたいだり、年をまたいだりすると結構大変ですが・・・ 後は、OSの監査機能等を使って更新ログをとってみたり・・・

  • kachansa
  • ベストアンサー率44% (30/67)
回答No.1

findを使うことになるかと思いますが、最新の更新日時の定義は何でしょうか? 100個のファイルがあれば、その中で日付がもっとも新しいという意味でしょうか? 何日とか何時間前に更新なら、findで一発だと思うのですが...

関連するQ&A

  • 最新の更新日時を取得したい

    RedHatLinux7.0です。シェル(bash)からサブディレクトリを含め最新の更新ファイルのファイル名とパスとその日時を得たいのですがその方法がわかりません。たとえば、、 ls -Rlt /home/dareka/public_html とするとサブディレクトリ毎に新しい順に並べてくれるのですが、欲しいのはこれらのファイルのうち最新のファイル名を一つだけとその日時とパスを知りたいのです。このような結果を得るコマンドはありますか?

  • 所有者不明のディレクトリやファイル

    度々すみません、 Linuxで所有者が不明で、lsコマンドの表示で ユーザーがuidで表示されているファイルがあるとします。 特定のディレクトリ配下の それらファイルを全て洗い出したいのですが、 コマンドで取得は可能でしょうか?。 uidが特定できていれば、以下のようなコマンドで 確認は可能かと思いますが、 ・UID:500 のファイル・ディレクトリの一覧表示 $ find /usr -uid 500 -print 現状は、500以外にも該当のuidがあると思われ、 洗い出したいと思っております。 アドバイスを頂けると助かります。

  • サブディレクトリ内のすべてのファイルの文字の置換

    コマンドラインから、サブディレクトリ内のすべてのファイルの文字を置換する方法を教えてください。 for x in *.*; \ do \ sed -e 's/original_pattern/replaced_pattern/g' $x > ${x}_tmp ; \ mv -f ${x}_tmp $x ; \ done とすることにより、ひとつのディレクトリ内であれば、文字列を変換できました。 しかし、そのディレクトリのサブディレクトリ内のファイルについても、再帰的に変換を行いたいのです。 grep -r などと組み合わせればよいのかとも思ったのですが、結局よくわかりませんでした。 よろしくお願いいたします。

  • ディレクトリをまるごとコピーしたいのですが(サブディレクトリも含めて)

    バックアップのためにサブディレクトリも含めてすべてのファイルをコピーしたいのですが、コマンドがわかりません。 DOSのバッチファイルでもいいのですが、コマンドを教えて下さい。 よりろしくお願いします。

  • ディレクトリ下のファイルとサブディレクトリを全削除

    バッチファイル作成の際、分からないことがあるのですが。 タイトルの通り、ディレクトリ下のファイルとサブディレクトリを全削除したいのですが、そのディレクトリ自体は残したいのです。 例えば "Temp"以下の全ファイルとサブディレクトリを削除したい場合 del "Temp" /s とするとサブディレクトリは残ってしまい、 rd "Temp" /s とすると"Temp"自体削除されてしまいます。 この場合、一度rdコマンドで削除した上でmdなどで新たにディレクトリを作成してやるしかないのでしょうか?

  • [バッチファイル]指定ファイルをサブディレクトリを含み検索・処理する

    ■WindowsXP Pro SP3 ■ディレクトリ構造 カレント ├ディレクトリ1  ├サブディレクトリ1-1   ├対象ファイル1-1  ├サブディレクトリ1-2   ├対象ファイル1-2 ├ディレクトリ2  ├サブディレクトリ2-1 ・ ・ ・ このような状態で指定したファイルすべてを見つけ出し、1つ1つ処理を行っていくバッチファイルの書き方を教えて頂きたいです 具体的には、指定する対象ファイルというのがmpeg2ファイルで、そのmpeg2ファイルをすべてFFmpegを用いてmpeg1へ変換しinputと同一ディレクトリに出力するといった動作です 考えた流れはこんな感じなのですがどうにもうまく動作しなくて困っています ディレクトリ1 ディレクトリ1内のサブディレクトリ1-1 サブディレクトリ1-1内の対象ファイル1-1を見つける 見つかったときはFFmpegの処理をする FFmpegが処理し終わったら次の対象ファイルを探す FFmpegの記述は FFmpeg.exe -i "input_file" "output_file" のような感じなのでパスや相対指定を使えば理想通りの動作をすると思うのですが、いま一つ書き方がわかりません

  • サブディレクトリも含む特定のファイルを削除したい

    UNIX系のコマンドで教えてください カレントディレクトリとそれ以下の階層全てのサブフォルダ内にある*.jpgというファイルを削除するにはどうすればいいでしょうか? よろしくお願いします

  • Linuxでディレクトリ内の最新ファイルとファイル数を取得したいです。

    ディレクトリ内にファイルが多すぎて lsしても画面が流れてしまい困っています。 ・ディレクトリのファイル数を取得したい ・ディレクトリ内の最新ファイルの日付を取得したい のですがどうしたら良いでしょうか?

  • ディレクトリの中の多階層を再帰的に処理したい

    お世話になります。 WindowsのコマンドのFORコマンド(ディレクトリ内のファイル全体、あるいは再帰的に処理を行う)と同じことをlinuxでしたいのですが、同じ、あるいは同じことが実現できるコマンドをご存知ありませんか? 再帰的にパーミッションの設定等を行いたいと考えています。

  • ftpコマンドで再帰的にフォルダとファイルを見たい

    コマンドプロンプトのftpコマンドを使用して、あるディレクトリ配下にあるフォルダとファイル一覧を再帰的に見たいです。 「コマンド:dir」では、ディレクトリ配下のフォルダ一覧は見れるのですが、フォルダの下にあるファイルまでは見ることができません。 どなたかご教授頂けるとうれしいです。 よろしくお願いします。