No Linux, conheço o comando mv !(folder1|folder2) folder1
se quero mover todos os arquivos da pasta atual, exceto folder1 e folder2, e movê-los folder1
. Mas estes recomendam, não funciona no terminal mac!
Onde está o comando equivalente no mac?
No Linux, conheço o comando mv !(folder1|folder2) folder1
se quero mover todos os arquivos da pasta atual, exceto folder1 e folder2, e movê-los folder1
. Mas estes recomendam, não funciona no terminal mac!
Onde está o comando equivalente no mac?
Respostas:
Parece que a versão do bash nas versões recentes do macOS é um pouco mais antiga do que você encontrará em algumas novas distribuições de Linux. Vejo a versão 3.2.57 no macOS High Sierra e Mojave e a versão 4.2.46 no RedHat Enterprise Linux 7.
Aqui está uma sintaxe que você pode usar para excluir os diretórios, conforme especificado:
# move everything but dir1 & dir2 into dir1
mv *[^dir1dir2]* dir1
E o mais interessante é que a sintaxe acima deve funcionar no bash no macOS e no Linux.
^dir1dir2
que não acho prático.
shopt -s extglob
, como recomendado acima em @ fd0, para usar sua sintaxe original. 2. Pense no caractere '^' como significando que não , assim como o '!' caractere em sua sintaxe original. Com isso em mente, os dois tipos de sintaxe são bastante semelhantes.
shopt -s extglob