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/
ログファイルが含まれています。
コマンドで2つの最新のログファイルを一覧表示したいと思います。ls
私は通常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
上記の結果は提供しません。私が得るのは、コマンドの最後の2つのファイルのリストです
find . -type d -name *log* | xargs ls -la
。
それでは、パイピング後にコマンドをパイピングできますかxargs
?上記の形式のファイル結果のリストを取得するにはどうすればよいですか?
find . -type d -name *log* | xargs sh -c "ls -ltr | tail -10"
現在のディレクトリにある10のディレクトリ名のリストを提供します。これはまさにですが/var/opt/SID
、それも私が望むものではありません。
ベストアンサー1
ほぼすべて来ました。最後のコマンドでは、以下を使用して正しく-I
実行できます。ls
-I replace-str
発生の交換交換-str初期引数では、標準入力から名前を読み込みます。また、引用符のないスペースは項目を終了せず、代わりに区切り文字は改行文字です。意味
-x
します-L 1
。
だから、
find . -type d -name "*log*" | xargs -I {} sh -c "echo {}; ls -la {} | tail -2"
echo
で見つかったディレクトリを見つけてfind
、ls | tail
そのディレクトリで作業を実行します。