2016-10-30 8 views
2

파일 목록이 들어있는 파일이 있고 각 파일에 대해 두 가지 명령을 수행하려고합니다. files.txt의bash (xargs?)의 파일 목록에서 여러 명령을 수행하는 방법

내용 :

file1 
file2 
file3 

내가 각 파일에 수행 할 명령은 ls -sdu (예를 들어).

내가 출력은 다음과 같이 끝나게 할 : 공정 대체를 사용하여,

<ls size> <du size> file1 
<ls size> <du size> file2 
<ls size> <du size> file3 

내가 떠들썩한 파티 스크립트를 사용하여이 작업을 수행하는 방법을 알고 있지만 쉽게 한 줄에이 작업을 수행 할 수있는 방법이 나 어떤 것?

는 내가 같은 것을 할 수 있다고 생각하지만, 그것은 작동하지 않았다 이러한 오류를 내놓았다

cat files.txt | tr '\n' '\0' | xargs -0 -I{} cat <(du {}) <(ls -s {}) 

:

du: cannot access `{}': No such file or directory 
ls: cannot access {}: No such file or directory 

이 할 수있는 방법이 있나요?

답변

1

당신은 실행할 수있는 sh 당신은 예를 들어 여러 명령을 넣을 수있는 xargs과 :

xargs -0 -I{} sh -c 'du {}; ls -s {}' 
+0

감사합니다! 좋아요, 나의 후속 질문은''du'를 측정 된 크기의 접두사 만 접두사로 사용하고 싶습니다. 일반적인 방법은'du | 컷 -f1 | tr --delete '\ n''하지만,'sh '명령은 작은 따옴표를 사용하여 인용하기 때문에 작은 따옴표를 사용할 수 없습니다. 그 모든 것을 '뒤'부분으로 대체 할 방법이 있습니까? – localhost

+0

큰 따옴표로 인용 할 수 있습니다. – janos