HP-UX ***** B.11.23 U ia64 ****無制限ユーザーライセンス
find . -type d -name *log* | xargs ls -la
ディレクトリ名(ディレクトリ名に含まlogれる名前)に続いて、そのディレクトリ内のすべてのファイルが表示されます。
ディレクトリは /var/opt/SID/application_a/log/、 /var/opt/SID/application_b/log/、 /var/opt/SID/application_c/log/などのログファイルが含まれています。
lsコマンドで最新の2つのログファイルのみを一覧表示したいので、通常はを使用して見つけますls -latr | tail -2。
出力はこのようなものでなければなりません。
/var/opt/SID/application_a/log/
-rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1
-rw-rw-rw- 1 user1 user1 59698 Jun 10 2013 log2
/var/opt/SID/application_b/log/
-rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1
-rw-rw-rw- 1 user1 user1 59698 Jun 10 2013 log2
/var/opt/SID/application_c/log/
-rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1
-rw-rw-rw- 1 user1 user1 59698 Jun 10 2013 log2
find . -type d -name *log* | xargs ls -la | tail -2上記の結果は得られません。私が取得するのは、find . -type d -name *log* | xargs ls -laコマンドの最後の2つのファイルのリストです
。
パイプされた後にコマンドをパイプできますxargsか?上記の形式のファイルの結果リストを取得するために、他にどのようにクエリを実行しますか?
find . -type d -name *log* | xargs sh -c "ls -ltr | tail -10"
現在のディレクトリ内にある10個のディレクトリ名のリストが表示されますが/var/opt/SID、これは私が望んでいるものでもありません。
sh -c2番目の引数としてコマンド名(パラメーター0)を想定しているため、常に行う必要があることにfind . -type d -name *log* | xargs sh -c "ls -ltr | tail -10" lstail注意してください(lstail最後に注意してください$0。作成されたシェルの役割を果たします)。そうしないと、最初の結果がその役割を満たし、使用されなくなります。
*log*そうしないと、シェルがそれを展開します。