동일한 파일 이름 아래 서로 다른 디렉터리에 있는 여러 매개 변수를 사용하는 명령을 실행하고 싶습니다.
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-<->/myfile
예 mycommand 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