Execute o comando nos arquivos de mesmo nome de vários diretórios

1

Eu quero executar um comando que aceita vários argumentos que residem em diretórios diferentes sob o mesmo nome de arquivo, por exemplo,

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

Eu estou procurando por algum comando shell que poderia colocar todos os arquivos em subdiretórios numerados a partir de 1 até 48 ou qualquer número como argumentos de comando.

    
por Sufyan 22.05.2017 / 00:32

2 respostas

2

Você pode usar globbing de nome de arquivo padrão, por exemplo para todos os números de 3 dígitos (por ordem):

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

Com globbing básico, você precisa de um padrão para números de um dígito, um para números de dois dígitos, etc.

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

Zsh (mas não outros shells) também suporta mycommand dir-<->/myfile , ou por ex. mycommand dir-<3-42>/myfile para os diretórios numerados de 3 a 42.

Ou se você preferir a expansão de contraventamento (e seu shell o suporta):

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

Se os nomes dos seus diretórios contiverem zeros à esquerda, coloque-os nas chaves, por exemplo, dir-{001..048}/myfile .

Com a expansão de chaves, você também pode fazer (no ksh93 e zsh, mas não no bash)

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

onde $n se expande para algum inteiro.

    
por 22.05.2017 / 00:43
-1
find . -type f -name myfile | xargs command
    
por 22.05.2017 / 00:39