2

特定のフォルダー内の最後の3つのログを一覧表示し、出力を別のtmp.outファイルにリダイレクトしたいと思います。

ls -ltr /home/oracle/$dbserver/*.log  |  awk '{print $9}' | tail -3   | tee tmp.out

tmpファイルに表示されると予想されるのは次のとおりです。

a.out
b.out
c.out

代わりに私が得るものは次のとおりです。

/home/oracle/DB1/a.out
/home/oracle/DB1/b.out
/home/oracle/DB1/c.out

私は間違いなくテールとティーの間に何かを使う必要があります。誰かが私を助けることができますか?

4

3 に答える 3

2
ls -ltr /home/oracle.$dbserver/*.log | tail -3 | awk '{print $NF}' | awk -F/ '{print $NF}' | tee tmp.out
于 2013-03-13T19:06:58.373 に答える
1

cdそのディレクトリに移動してから

 cd /home/oracle/$dbserver/ && ls -ltr *.log  |  awk '{print $9}' | tail -3   | tee  $OLDPWD/tmp.out
于 2013-03-13T19:13:03.967 に答える
1

basenameコマンドはフォームの文字列を受け取り、単純/foo/bar/baz.txtにを返しますbaz.txt。xargsを介して呼び出します。コマンドラインフラグを使用して-n 1、一度に1つのファイル名のみをに送信するようにしてbasenameください。

ls -ltr /home/oracle/$dbserver/*.log | awk '{print $9}' | xargs -n 1 basename | tail -3 | tee tmp.out

于 2013-03-13T19:16:26.430 に答える