Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Wolverine X Sabretooth
Por jlojunior
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Lemuel Roberto em (última atualização em 23/02/2012)   [ 2314 hits ]

Login: lemuelroberto, 200846 pontos

   


Descrição

Este script, que está pronto para ser usado como um Nautilus Script, cria Hard Link para os arquivos selecionados no Nautilus ou mesmo pela linha linda de comando.

Para instalar o script basta copiar o arquivo para ~/.gnome2/nautilus-scripts e dar permissão de execução ou executar o arquivo 'install' que acompanha o arquivo compactado.

Eu uso Hard Links para, por exemplo, manter um arquivo no diretório de torrent, semeando, e ao mesmo tempo no meu diretório de filmes e em um diretório público, sem a necessidade de duplicar o arquivo.

Voce pode encontrar mais informações sobre Hard Links aqui: http://brunotorres.net/links

Qualquer dúvida, problema ou bug, é só postar aqui.

[ Download: Mass-Hard-Link-Creator.tar.gz ]   [ Enviar nova versão ]

Versões atualizadas deste script (NOVO)
Linux user

Publicado por Lemuel Roberto em 21/02/2012

Changelog: Atualiza o arquivo 'install' que está com problemas.

(versão 2)

 

[ Esconder código-fonte ]

#!/bin/bash

#####################################################################
#                                                                   #
#                           Informações                             #
#                                                                   #
#-- [ Ficha ] ------------------------------------------------------#
#                                                                   #
# Arquivo: Mass Hard Link Creator                                   #
# Codificação: utf8                                                 #
# Data: 17/01/2012                                                  #
# Dependência: zenity                                               #
# Autor: Lemuel Roberto <lemuelroberto@gmail.com>                   #
# Under the GNU GPL (v3.0 or later)                                 #
#                                                                   #
#-- [ Descrição ] --------------------------------------------------#
#                                                                   #
#   Este script cria Hard Links em massa a partir da seleção de     #
#  arquivos pelo zenity, ou mesmo por arquivos passados como        #
# parâmetros na linha de comando.                                   #
#   Se algum diretório for selecionado, o script criará Hard Links  #
# dos arquivos internos ao diretório recursivamente e serão criados #
# diretórios com a mesma árvore de diretórios dos alvos, no         #
# diretório destino.                                                #
#                                                                   #
#   OBS: Este script NÃO cria hard links para diretórios, apenas    #
# para arquivos normais.                                            #
#                                                                   #
#-- [ Instalação ] -------------------------------------------------#
#                                                                   #
#   Para instalar, basta executar o arquivo 'install' que           #
# acompanha este script ou copiar este arquivo para                 #
#  ~/.gnome2/nautilus-scripts e dar permissão de execução para ele. #
#   Ao instalar o script, quando voce clicar com o botão direito    #
# dentro do Naultilus, aparecerá um menu Scripts.                   #
#                                                                   #
#-- [ Configuração ] -----------------------------------------------#
#                                                                   #
#   Substitua a variável $DIR_DESTINO_PADRAO (linha 58) pelo        #
# diretório de sua preferência, isso poderá facilitar a escolha do  #
# destino dos links.                                                #
#                                                                   #
#-- [ Uso ] --------------------------------------------------------#
#                                                                   #
#   Selecione diretórios e/ou arquivos, clique com botão direito e  #
# selecione 'Mass Hard Link Creator'.                               #
#                                                                   #
#####################################################################

#####################################################################
#                                                                   #
#   Variáveis que serão usadas pelas janelas.                       #
#                                                                   #
#####################################################################

# Para alterar o destino padrão, basta trocar '$HOME'
# pelo caminho desejado.
DIR_DESTINO_PADRAO="$HOME"
TITULO="Mass Hard Link Creator"

#####################################################################
#                                                                   #
#   Abre uma janela para seleção do diretório de destino dos        #
# hard links que serão criados e retorna o diretório selecionado.   #
#                                                                   #
#####################################################################
get_destino() {
  zenity --title="$TITULO"                                          \
      --info                                                        \
      --no-wrap                                                     \
      --text="Selecione o diretório destino.\n"

  DESTINO=$( zenity                                                 \
    --title="$TITULO - Selecione o diretório destino"               \
    --file-selection                                                \
    --filename="$DIR_DESTINO_PADRAO"                                \
    --directory )

  # Retorna o destino escolhido.
  echo "${DESTINO}"
}

#####################################################################
#                                                                   #
#   Cria hard link para todo arquivo comum que estiver  dentro do   #
# diretório atual.                                                  #
#                                                                   #
#  $1 - destino do hard link.                                       #
#                                                                   #
#####################################################################

cria_hl() {
  for FILE in * ; do
    if [ -f "${FILE}" ]; then
      ln --target-directory="${1}" "${FILE}"
    fi
  done
}

#####################################################################
#                                                                   #
#   Navega recursivamente pelo diretório passado no parâmetro $2.   #
#                                                                   #
# $1 - Destino dos Hard Links.                                      #
# $2 - Nome do diretório atual.                                     #
#                                                                   #
#####################################################################
navega () {
  # Cria um subdiretório semelhante ao que é no original.
  mkdir -p "${1}"/"${2}"

  # Cria hard link no subdiretório criado.
  cria_hl "${1}"/"${2}"

  for FILE in * ; do
    if [ -d "${FILE}" ]; then
      # Entra no diretório.
      cd "${FILE}"

      # Chamada recursiva.
      navega "${1}"  "${2}"/"${FILE}"

      # Retorna ao diretório pai.
      cd ..
    fi
  done
}

#####################################################################
#                                                                   #
#   Função principal.                                               #
#                                                                   #
#####################################################################
main() {
  declare -a SIMPLEFILES
  declare -a DIRECTORIES

  IX=-1
  IY=-1

  for FILE in "$@" ; do
    if [ -f "${FILE}" ]; then
      IX=$[ ${IX} + 1 ]
      SIMPLEFILES[${IX}]="${FILE}"
    fi

    if [ -d "${FILE}" ]; then
      IY=$[ ${IY} + 1 ]
      DIRECTORIES[${IY}]="${FILE}"
    fi
  done

  # Encerra o script se nenhum arquivo válido foi selecionado.
  if [ 0 -eq ${#SIMPLEFILES} -a 0 -eq ${#DIRECTORIES} ]; then
    zenity --title="$TITULO"                                        \
        --error                                                     \
        --no-wrap                                                   \
        --text="Nenhum arquivo comum ou diretório foi selecionado.\n"

    exit 0
  fi

  DEST=$(get_destino)

  # Encerra o script se o destino selecionado não for válido.
  if [ "$DEST" == "" ]; then
    zenity --title="$TITULO"                                        \
          --error                                                   \
          --no-wrap                                                 \
          --text="O destino selecionado não é válido.\n"

    exit 0
  fi

  if [ 0 -ne ${#SIMPLEFILES} ]; then
    for FILE in "${SIMPLEFILES[@]}"; do
      ln --target-directory="${DEST}" "${FILE}"
    done
  fi

  if [ 0 -ne ${#DIRECTORIES} ]; then
    for FILE in "${DIRECTORIES[@]}"; do
      cd "${FILE}"
      navega "$DEST" "${FILE}"
      cd ..
    done
  fi
  
  exit 0
}

main "$@"

Scripts recomendados
   Script Linux recomendado Regula o horário de uso do computador pelos filhos
   Script Linux recomendado getgazette - script para baixar a Linux Gazette
   Script Linux recomendado clean_squid
   Script Linux recomendado Extração do áudio de um DVD - Ogg Vorbis
   Script Linux recomendado TTYREC

Comentários
[1] Comentário enviado por sergiomb em 31/01/2012 - 16:02h:

em bash ? baah ! , o script em python ou vá lé em perl era muito mais legível.


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.