Midnight Commander upload / copy excluir

3

A minha pergunta é semelhante a esta , mas gostaria de excluir alguns directórios recursivamente ao copiar / fazer upload de arquivos. Especificamente, eu gostaria de excluir pastas .git da base de código inteira que estou carregando (contém subrepositórios, alguns bastante detalhados na estrutura)

Eu posso fazer isso para o diretório atual com a tecla "-" e desmarcar a opção .git, mas existe uma maneira de fazer isso de forma recursiva?

    
por Teo.sk 24.06.2012 / 11:32

1 resposta

3

O Midnight Commander não tem esse tipo de controle sobre as operações de subdiretórios. Tipo de acordo do tipo "tudo ou nada". Como você disse, você pode controlar as entradas de nível superior, mas nada mais.

Suponho que você poderia escrever algum tipo de script para ser usado no menu F2 ...

Outra maneira, meio kludgy, mas funcionaria ...

find . -type d -name ".git" -exec chmod 000 "{}" \;

O que tornaria todos os subdiretórios .git ilegíveis, o MC mostraria um diálogo de erro, informaria 'Continuar' e continuaria processando.

Depois:

find . -type d -name ".git" -exec chmod 750 "{}" \;

para restaurar as permissões desejadas. (Eu uso 750 e 640, muitos preferem 755 e 644 ... use o que você preferir no lugar do '750')

Ha! e como uma mistura da minha ideia 'coloque no menu F2' ... você poderia colocar esses dois comandos no menu F2 ... tornando isso quase (quase!) indolor.

EDITAR:

Por solicitação:

#
# Restore permissions for any .git subdirectories to 755
g   Restore .git directories to 755 permissions
    if [ "x$PWD" = "x$HOME" ]; then
        exit
    fi
    find . -type d -name ".git" -exec chmod 755 "{}" \; 2>/dev/null
#
# Remove permissions for any .git subdirectories
G   Hide .git directories with 000 permissions
    if [ "x$PWD" = "x$HOME" ]; then
        exit
    fi
    find . -type d -name ".git" -exec chmod 000 "{}" \; 2>/dev/null
#

Salve isso no arquivo ' ~ / .config / mc / menu '

Se este arquivo já existir, acrescente-o ao END (certas coisas devem estar primeiro no arquivo, não quero estragar tudo).

Se este arquivo não existisse, as entradas aqui substituirão todas as entradas de menu padrão F2 / Usuário que foram vistas normalmente. Se você precisar dessas entradas de menu de volta (algumas são úteis!), Então encontre o arquivo chamado mc.menu (normalmente encontrado em / etc / mc / ), copie-o para ~ / .config / mc / menu e, novamente, anexe o acima ao final. O FIM!

Se você estiver usando uma versão mais antiga do mc , talvez seja necessário procurar o arquivo mc.menu e o menu arquivo precisa estar em ~ / .mc.menu ... complicado, sim, um pouco. Mas recentemente, o mc revisou seus locais de arquivos de configuração para refletir as melhores práticas (sugestões de XDG) e moveu tudo para ~ / .config / mc / . A página do manual mc (1) é muito útil, procure por menu do usuário .

Isso adiciona dois comandos:

g (lowercase g)  which will RESTORE the 755 permissions for any .git subdirs
G (uppercase g)  which will REMOVE the permissions (set to 000) from any .git subdirs

Eu adicionei um teste para evitar que isso acontecesse em seu $ HOME, embora isso não seja destrutivo ... ele simplesmente não se sente bem sendo capaz de fazer isso lá.

Aproveite!

    
por 30.06.2012 / 22:44