여러 디렉터리에 있는 동일한 이름의 파일에 대해 명령 실행

여러 디렉터리에 있는 동일한 이름의 파일에 대해 명령 실행

동일한 파일 이름 아래 서로 다른 디렉터리에 있는 여러 매개 변수를 사용하는 명령을 실행하고 싶습니다.

mycommand dir-001/myfile dir-002/myfile dir-003/myfile … dir-048/myfile

모든 파일을 1부터 48까지 번호가 매겨진 하위 디렉터리에 넣거나 명령 매개 변수로 임의의 번호를 지정할 수 있는 일부 셸 명령을 찾고 있습니다.

답변1

3자리 숫자(순서대로)와 같은 표준 파일 이름 와일드카드를 사용할 수 있습니다.

$ mycommand dir-[0-9][0-9][0-9]/myfile

기본 와일드카드의 경우 한 자리 숫자에 대한 패턴, 두 자리 숫자에 대한 패턴 등이 필요합니다.

$ mycommand dir-[0-9]/myfile dir-[0-9][0-9]/myfile

Zsh(다른 쉘은 아님)도 지원하거나 mycommand dir-<->/myfilemycommand dir-<3-42>/myfile를 들어 3~42번 디렉토리를 지원합니다.

또는 중괄호 확장을 선호하는 경우(그리고 쉘이 이를 지원하는 경우):

$ mycommand dir-{1..3}/myfile

디렉터리 이름 앞에 0이 포함되어 있으면 중괄호로 묶습니다 dir-{001..048}/myfile.

중괄호 확장을 사용하면 이 작업도 수행할 수 있습니다(ksh93 및 zsh에서는 가능하지만 bash에서는 불가능).

$ mycommand dir-{1..$n}/myfile

이는 $n정수로 확장됩니다.

답변2

find . -type f -name myfile | xargs command

관련 정보