Diferença no cli “find” entre o debian e o macOS


0

Eu apenas mudei de mDebian para o macOS depois que meu laptop caiu. Felizmente eu estava pronto para salvar meu .zshrc com meus aliases, no entanto, m dois aliases que usam "find" não parecem funcionar no macOS e não tenho certeza qual é a diferença.

O primeiro comando deve mover todos os arquivos dos subdiretórios para o diretório atual e funcionou perfeitamente no debian:

alias mup='find -type f -exec mv {} . \;'

No macOS, porém, eu recebo um "find: illegal option - t"

Da mesma forma, para alterar o arquivo que termina de JPG para JPG eu usei

alias jprn="find -name '*.JPG' -exec rename "s/.JPG/.jpg/g" \{\} \;"

que resulta em outro "find: illegal option - n"

Infelizmente, o erro é bastante misterioso, então nem sei por onde começar a procurar uma resolução, já que todas as alças parecem estar corretas com base no homem.

Qualquer informação ou ponteiro seria muito apreciado!

obrigado

Respostas:


1

para mup, find precisa de uma path argumento:

alias mup='find . -type f -exec mv {} . \;'

para jprn, find precisa de uma path argumento. Além disso, não há rename comando no macOS (você pode instalá-lo com Homebrew Apesar). Isso é o melhor que eu poderia fazer no momento:

alias jprn='find . -name "*.JPG" -print | while read -r f; do mv "$f" "${f/%JPG/jpg}"; done'

${f/%JPG/jpg} substitutos $f acabando JPG com jpg, veja a última parte da seção "Expansão de Parâmetros" em man zshexpn.


1
Eu recomendaria usar ... -print0 | while IFS= read -r -d '' f; do ... para evitar problemas quando nomes de arquivos contêm espaços e outros caracteres engraçados (que são comuns no macOS). Vejo BashFAQ # 20: Como posso encontrar e lidar com segurança com nomes de arquivos contendo novas linhas, espaços ou ambos?
Gordon Davisson
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.