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

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

동일한 파일 이름 아래의 다른 디렉터리에 있는 여러 인수를 사용하는 명령을 실행하고 싶습니다. 예:

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

기본 globbing의 경우 한 자리 숫자에 대한 하나의 패턴, 두 자리 숫자에 대한 하나의 패턴 등이 필요합니다.

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

Zsh(다른 쉘은 아님)도 지원합니다 mycommand dir-<->/myfile. 또는 예를 들어 mycommand dir-<3-42>/myfile3~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

관련 정보