• ベストアンサー

Unix Shell 最新更新日時のファイルパス

例えば以下のディレクトリに次のようなデータがあるとします。 /home/work/test ・INV_20110401000001.csv ・INV_20110401000002.csv ・INV_20110401000003.csv これらのファイルの中から最新の更新日時のファイルのパスを取得したいのですが、 良い方法が思いつきません。 末尾の数字が大きいものが最新ファイルとは限らず、 ファイルがいくつあるかも日によってかわります。 testコマンドでは比較ファイルを2つまでしか指定できず困っています。 どなたかご存知の方がいれば教えていただきたいです。 よろしくお願いいたします。

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

  • ベストアンサー
  • pakuti
  • ベストアンサー率50% (317/631)
回答No.2

ls -lrt |tail -n 1|awk '{print $9}' がぱっと思いついた方法でした リバースをせずにheadで良いか・・・ (

anman0201
質問者

お礼

ご回答ありがとうございます。 教えていただいた方法で希望通りの結果を得ることができました。 たびたび申し訳ないのですが、たとえばこのファイルの中に複数のファイル名が 存在した場合、ファイル名'INV'が含まれるファイルの最新ファイルを取得することは可能でしょうか?

その他の回答 (2)

回答No.3

>そこからどうやってパスを取得するのでしょうか? プログラム書いてるんでしょうからいろいろ考えましょうよ・・・ 最新のファイル名を取得するならこれが一番簡単かな。 ls -1t | head -n1 ※「ls -」の次は小文字のエルではありません。数字の1です。ご注意。

anman0201
質問者

お礼

ご回答ありがとうございます。 Shell初心者なものでただいま勉強中です... 頂いた意見大変参考になりました。

回答No.1

ls -lt で更新日順に表示させれば取得できませんか。

anman0201
質問者

お礼

ご回答ありがとうございます。 そこからどうやってパスを取得するのでしょうか?

関連するQ&A

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

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

  • 更新日時でソートしてファイル一覧を取得したい

    特定のディレクトリのファイル一覧を取得したいのですが、必要なのは最終更新日時でソートし、最新の30件のファイル名です。(ディレクトリのファイル件数は30件以上とは限りません) exec()を使った外部コマンドでは最新の1件のファイル名は取得できたのですが、30件となると方法がわかりません。 今考え付くのは、 dir()コマンドで取得したファイル名から最終更新日時を取得し、ソートして30件取り出す という方法です。 他にもっとスマートな方法で最新30件のファイル名を取得する方法はないでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • shell lftpでsftp接続

    Shellのスクリプトの中で次のコマンドを記述しています。 lftp -u "user","pass" sftp://IP 操作対象ファイルがあるDIRに移動後↓ >mv *.csv home/oracle/work/ のように拡張子がCSVのファイルをすべてworkに移動したいのですが、 これをsh -x で実行すると、 Access fairure: No such file (*.csv) と出力されてしまいます。 複数ファイルのディレクトリ移動はできないのでしょうか? どなたかご存知の方がいればご教示いただきたく存じます。

  • ファイルは日時が更新されない?

    自分のPCで作成したデータを、バックアップサーバに保存するときに、あれ?と思ったので質問です。 ・フォルダに、いくつかのファイルが入っている ・フォルダをPCとバックアップサーバに保管し、常に同じファイルが二つ存在するようにする ・フォルダ内にあるひとつのファイルを修正→ファイルの更新日時が反映 ・フォルダの日時は、中のファイルが更新されているのに、ファイル作成時のまま フォルダごと更新するときに、フォルダの更新日時が中のファイルを更新するたびに連動すれば、どちらが新しい最新のデータかわかるのに、なぜ、フォルダの日時は作成時のままなんでしょうか。 バックアップを取る際に、毎日やっていれば問題ないですが、たくさんのファイルを管理している中で、いちいちフォルダの中をあけてファイルの更新日時を比較するのは面倒です。 みなさん、どのように対応していらっしゃいますか?

  • コマンドでファイルコピーする際の日時比較

    コマンドでファイルコピーする際の日時比較 フォルダAにTEST.TXT(…(1))、フォルダBにもTEST.TXT(…(2))というファイルがあります。 コマンドでフォルダBからフォルダAにコピーする際、 (1)と(2)の更新日時を比較し、(1)のファイルの方が古かったら、 (1)をリネームし、(2)をコピーするという処理を行いたいのですが、可能でしょうか? (更新日時が同じ場合は何もしない。) 使用上のOSはXP Proです。 宜しくお願い致します。

  • 2003で指定更新日時より古いファイル一覧を出力

    みなさんこんにちは。 WindowsServer2003Standardで稼動させているファイルサーバがあるのですが、 容量が逼迫してきたこともあり、指定した更新日時より古いファイルについて 一覧を出力したいと考えております。 これができるツールは多々見つかりますが、本番業務で稼動しているサーバの ため、フリーソフト等の導入は行えず、あくまでもOSの標準機能で何とかする 必要があります。 単純にWindowsのファイル検索で更新日時を指定して、そこで出てきた結果が CSVなりでエクスポートできればいいのですが、これはできそうにありませんので、 DOSからのコマンド入力(あるいはバッチ)で何とかできないでしょうか。 ファイル一覧は、その絶対パスと更新日時が記載されている必要があります。 何かいい方法をご存知の方がいらっしゃいましたら、ヒントとなるサイトのURLでも 構いませんので、ご教示頂けますと大変ありがたいです。 宜しくお願い致します。

  • FTPサーバ(第一階層)の更新日時取得

    お世話になっております。 現在、FTPサーバ(第一階層にあるディレクトリ・ファイル)のファイル名・更新日時を取得する必要があります。 FTPコマンドのlsコマンドを使用してみたのですが、下記のような形での取得なってしまします。 ----- drwxr-xr-x 17 test-ftp@test.net vuser 4096 Jun 22 2013 test_dir1 drwxr-xr-x 10 test-ftp@test.net vuser 12288 Apr 9 17:54 test_dir2 ------ 1行目は、日時がなく、日時が入って欲しい 2行目は、年がなく、年が入って欲しい さらに可能であれば、フォーマットを「2021-04-09 17:54」という形で表示されると助かります。 サーバ会社がレンタル会社様のため、サーバに対してのコマンドはFTPコマンドで接続してFTPコマンドを利用のみ可能です。 lsコマンドにオプションを追加や、別のコマンドで可能でしょうか? または、別のFTPソフトを利用することでテキストファイルなどに出力できるツールなどございますでしょうか? 端末は、Mac10.15.7、Windows10ございます。 お手数をおかけいたしますが、ご教授いただけますと幸いでございます。 よろしくお願いいたします。

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

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

  • 指定日時以降に更新(作成)されたファイルの抽出

    指定日時以降に更新・作成されたファイルの一覧を抽出し、テキストやCSV出力できるような方法を探しています。 フリーソフト、あるいはコマンドプロンプトなどで実現可能な方法はありますでしょうか?

  • csvファイルの作成日時

    os:windows2000pro tool:vb6.0sp5 csvファイル:カンマ区切 (1)csvファイルの作成日時の取得方法  test.csvのプロパティを確認すると  1.作成日時 2.更新日時 3.アクセス日時  と項目があります。  この作成日時を取得する方法を教えてください (2)また、csvファイル内部  日時,総合,国語,算数,理科,社会  2005/03/29 11:29:28,5,90,98,88,80  2005/03/30 08:23:28,4,98,70,65,80  という情報が続きます。  この2行目の日時を取得する方法を教えてください 以上、よろしくお願いいたします