localize o comando shellscript execute para cada arquivo

1

Eu encontrei o comando "find" é muito mais rápido que o "Spotlight" no mac os x eu prefiro visualizar os resultados com o automador sem sorte então eu espero que os nerds em torno da SU ajudem com a solução sobre isso

uma frase-chave de shellscript.sh é executada:

  1. crie uma pasta na área de trabalho "Resultados", se não houver

  2. exclua tudo nesta pasta (resultados recentes)

  3. foreach result criar um simlink

obrigado

    
por user45025 03.08.2010 / 20:48

2 respostas

1

Aqui está uma versão com algumas melhorias.

  • Não inclua seu nome de usuário no script, use ~ para se referir ao seu diretório pessoal.

  • Armazene o nome do diretório de resultados em uma variável. Isso ilustra como usar uma variável em um script de shell.

  • Faça a parte que remove o resultado de uma pesquisa anterior mais robusta: ela não removerá nada que não seja um link simbólico.

  • O mais importante: sua versão falharia com nomes de arquivos contendo espaços ou alguns caracteres especiais, porque o shell faz algum reparo do resultado de $(...) e $file . Você deve sempre colocar substituições de variáveis entre aspas duplas (ou seja, escrever "$file" ). Minha versão funciona corretamente com todos os nomes de arquivos (exceto se eles contiverem novas linhas, mas isso é inescapável com locate ).

#!/bin/bash
results_dir=~/Desktop/results
mkdir -p "$results_dir"
find "$results_dir" -type l -exec rm {} +
echo "Please enter some input: "
read -r input_variable
locate "$input_variable" | while read -r line; do
  ln -s "$line" "$results_dir/"
done
    
por 03.08.2010 / 23:45
0

meu progresso:

#!/bin/bash
rm -rf /Users/arpecop/Desktop/results/
mkdir /Users/arpecop/Desktop/results/
echo "Please enter some input: "
read input_variable
for file in $(locate "$input_variable")
do
ln -s $file  /Users/arpecop/Desktop/results/
done
    
por 03.08.2010 / 22:54