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