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
명령 으로 두 개의 최신 로그 파일 만 나열하려고합니다 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
명령 의 마지막 두 파일 목록입니다
.
파이프 후 명령을 파이프 할 수 xargs
있습니까? 위의 형식으로 결과 파일 목록을 얻기 위해 어떻게 쿼리합니까?
find . -type d -name *log* | xargs sh -c "ls -ltr | tail -10"
현재 디렉토리 안에있는 10 개의 디렉토리 이름 목록을 제공하며 이는 /var/opt/SID
내가 원하는 것이 아닙니다.
sh -c
당신은 항상해야하므로, 두 번째 인수로 명령 이름 (매개 변수 0) 예상 find . -type d -name *log* | xargs sh -c "ls -ltr | tail -10" lstail
(통지 lstail
될 것입니다 끝에서 $0
생성 된 쉘을). 그렇지 않으면 첫 번째 결과가 해당 역할을 채우고 사용되지 않습니다.
*log*
그렇지 않으면 쉘이 확장 할 것임을 인용해야 합니다.