2016-05-14 10 views
1

私はAというディレクトリを持っています。その中の1つのファイル/ディレクトリの変更日を知りたいと思います。ここに私のコードLinux:変数をファイルとして読み込みます。

#!/bin/bash 

find A | sort -d 
var="$(head -2 | tail -1)" 
echo "$var" 
date -r $var '+%S' 
基本的に私は自分のコードになりたい方法です

、私はそれだけで私のディレクトリA(findコマンド)の内側にあるものを示し、それを行う際に、エコーが動作しない、日付でもありません。 私は、次のようなメッセージが表示されています:日付+%sこのタイプのファイルまたはディレクトリがありません。

私は変数をファイルとして使用することに関していくつかの質問を見ましたが、私の場合は問題を引き起こす可能性のあるものは表示されません(スラッシュの使用など)。だから私は何かが間違っているかどうかを知りたかった。

+0

あなたの 'head -2 | tail -1'パイプラインには入力がありません。 2番目のファイルの時間をアルファベット順に印刷しようとしていますか? – Mifeet

+1

レパートリー:名詞、複数のレパートリー。: 1つの季節に定期的または交互の順序でいくつかの作品を発表する劇場プレゼンテーションの一種。 o.O –

+0

ええ、私もこれを見ました:) – Mifeet

答えて

6

find A | sort -dソートされたファイルのリストを標準出力に出力します。

head -2 | tail -1headは標準入力からのデータを待ちます。標準入力から来て何も

、私は、スクリプトが永遠にハングアップするべきだと思います(?)

varおそらく空の文字列です。したがって、echoは、空の文字列(何もない)と改行を表示します。

varに格納されているものはすべて、ディスク上にファイル名が見つかりません。これがdateがこのエラーを生成した理由です。

はこれに試してみて:

#!/bin/bash -- 

var="$(find A | sort -d | head -2 | tail -1)" 
printf "%s " "$var" 
date -r "$var" '+%s' 

find-printf%Tでファイルの最終更新時刻を印刷することができます。

はこれに試してみて:

find A -printf "%p %[email protected]\n" | sort -d | awk 'NR==2{print ; quit}' 

-printf "%p %[email protected]\n":ファイル名+ (スペース文字)+ last modification time of the file as seconds since Jan. 1, 1970, 00:00 GMT, with fractional part.

awk 'NR==2{print ; quit}プリント2行目のみを出力します。

関連する問題