지정된 디렉토리의 모든 디렉토리에 대한 수은 명령 호출


1

부모 디렉토리에 약 10 hg 저장소가 복제되어 있다고 가정 해 봅시다 ( "부모"라고 함). 각 디렉토리에 들어가서 호출하는 hg status힘든 작업을 수행하는 대신 모든 하위 디렉토리에서 와 같이 수은 명령을 호출 할 수있는 방법이 있습니까?cdhg status

나는 좋은 오래된 것을 시도 xargs했지만 어떤 이유로 든 작동하지 않습니다. 내가 사용한 명령은 다음과 같습니다.

find . -maxdepth 1 -type d -print | xargs -t "hg status"

ls | xargs -t "hg status"

업데이트 : 솔루션은을 사용할 때 명시 적 이름 보유자를 사용하는 것이 었습니다 xargs. 다음과 같은 것 :

ls | xargs -t -I {} hg status {}

따옴표를 제거하십시오.
Mikel

@Mikel : 그래도 작동하지 않습니다. 시도하지 않았지만 ... :)
sasuke

답변:


2
for dir in ./*/
do
  (cd $dir && hg status)
done

xargs조합을 사용하는 원 라이너로 가능하지 않습니까? 그렇지 않다면 왜 내 라이너가 작동하지 않는지 설명해 주시면 감사하겠습니다. 감사.
sasuke

2
xargs 버전은 디렉토리를 단일 hg명령에 여러 인수로 제공하기 때문에 작동하지 않습니다 . 이 대답은 여러 문제 hg다른 디렉토리에서 명령을 (오, 대신 뉴 라인의 세미콜론을 사용하고 그 입니다 ! 한 라이너)
노먼 회색

@Norman : 설명해 주셔서 감사합니다. 그러나 문제는 다시 ls | xargs grep "something"작동하지만 작동 ls | xargs hg status하지 않는 이유는 무엇입니까?
sasuke

1
@sasuke : grep여러 파일을 인수로 허용하지만 hg status그렇지 않습니다.
패치

그러나 ls | xargs -t -I {} mv {} {}.old어떻습니까? 어쨌든, 해결책을 찾았고에서에서 자리 표시자를 명시 적으로 사용하는 것입니다 xargs. 올바른 길로 안내해 주셔서 감사합니다. 답장도 받아 왔습니다. :)
sasuke

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.