2016-08-11 19 views
0

私はリモートマシンにsshを実行し、最後に変更されたファイルを持つpathA(/ home/abc/mydata)に存在するディレクトリ名のリストを取得しようとしています。 1時間。リモートホスト経由でディレクトリのリストを取得するUnixコマンド

ディレクトリ: -

/home/abc/mydata 
    -> Directory a 
     ->file1 last modified 1 hour back 
     ->file2 last modified 1 year back 
     ->file3 last modified 1 day back 
    -> Directory b 
     ->file11 last modified 1 year back 
     ->file22 last modified 1 year back 
     ->file33 last modified 1 year back 
     ->Directory b1 
      ->fileb1-11 last modified 1 hour back 
    -> Directory c 
     ->file111 last modified 1 year back 
     ->file222 last modified 1 year back 
     ->file333 last modified 1 year back 

私は

として、最終的な出力をしたいが、私は、次のコマンド

  ssh "host" -t "find /home/abc/mydata -type d -mmin -60 -ls" 

をしようとしています

a => as it has 1 file which was modified 1 hour back(file1) 
    b => as it has 1 file under sub directory of directory b (fileb1-11) 

として、私は、出力を取得しようとしています

a 
    b 

ただし、このコマンドはサブディレクトリを出力としても表示します。

a 
    b 
    b1 

いくつかのヘルプは素晴らしいでしょう。

答えて

0

試してみてください。

ssh "$host" ' 
find /home/abc/mydata -mindepth 1 -maxdepth 1 -type d | 
while read -r d; do 
    [ "$(find "$d" -mmin -1 -type f -print -quit 2>/dev/null)" ] && 
    ls -ldi "$d" 
done 
' 

注:

  • mindepth/maxdepthにより、第1 findは唯一のレベルを見ていきます。1.
  • 別々findは定期各サブフォルダ内になりますファイル-type f)が最近修正されました。最近変更された他のファイルタイプ(サブディレクトリ/ソケット/シンボリックリンク)で出力をトリガーする場合は、-type fを削除してください。あなたは色付きls出力したい場合は
  • sshから-tパラメータが必要なだけです。
  • ls -ldi ...の出力はfind ... -lsの出力とわずかに異なりますが、私はそれができると推測しています。
  • 第2レベルの戻り値findはここではあまりにも曖昧です。代わりに、出力が空でないかどうかをテストするだけです。
+0

これは、すべての深さ1に存在し、ディレクトリではなく、時間(-ctimeまたは-mtime)に基づいて変更されたファイルが含まれているものを示しています。これに対する修正? – learner

+0

私は理解していません:OPでは、あなたは 'a'と' b/b2'ではなく 'a'と' b'という出力をしたいと言っています。 –

+0

はい、あなたのスクリプトはa、b、cではなくa、b ieとして出力しています。 mydataフォルダーにあるすべてのディレクトリーが出力として表示されます。 – learner

関連する問題