GNU/Linux >> Linux の 問題 >  >> Linux

1行で最も古いファイルの年齢を検索しますか、それともゼロを返しますか?

特定のディレクトリで最も古いファイルの古さを検索するか、このディレクトリにファイルがない場合は0を返します。また、それを行う1行のコマンドが必要です。これまでのところ、これはディレクトリ内の最も古いファイルの経過時間を秒単位で見つけるための私のコマンドです:

expr $(($(date +%s) - $(stat -c %Y $(ls -lt /path/to/dir/ | tail -1 | awk '{print $NF}'))))

問題は、ファイルがない場合、次のエラーが返されることです。

$ expr $(($(date +%s) - $(stat -c %Y $(ls -lt /path/to/dir/ | tail -1 | awk '{print $NF}'))))
stat: cannot stat ‘0’: No such file or directory
-bash: 1554373460 - : syntax error: operand expected (error token is "- ")

したがって、この場合、コマンドが0だけを返し、エラーの出力を抑制したいのです。

承認された回答:

1行にする必要がある場合:

stat -c %Y ./* 2>/dev/null | awk -v d="$(date +%s)" 'BEGIN {m=d} $0 < m {m = $0} END {print d - m}'
  • stat -c %Y ./* 2>/dev/null エラーを無視して、すべてのファイルのタイムスタンプを出力します(したがって、ファイルがないと出力されません)
  • awkを使用する場合:

    • -v d="$(date +%s)" 現在のタイムスタンプを変数dに保存します
    • BEGIN {m=d} mを初期化します d
    • $0 < m {m = $0} mで最小値を追跡する
    • END {print d - m} 違いを印刷します。

Linux
  1. ファイルの行をループする方法は?

  2. フォルダから最も古いファイルを削除するためのBashスクリプト?

  3. ディレクトリのコンテンツのMd5合計を1つの合計として取得するにはどうすればよいですか?

  1. 入力行3でパッチを適用するファイルが見つかりませんか?

  2. コマンドラインからストップワードリストを含むファイルで最も頻繁に使用されるN個の単語を検索しますか?

  3. ファイルのURLを探す

  1. コマンドラインからWordPressのバージョンを見つける

  2. Unix の行末を Windows に変換する

  3. ディレクトリツリーで最も古いファイルを見つけるにはどうすればよいですか