Edite um arquivo por meio de um script e mantenha as tags osx

3

No OSX, você pode ter tags que permitem identificar diferentes categorias de arquivos. Aqui estão dois arquivos de texto com tags diferentes quando visualizados no Finder:

Eutenhoumgrandenúmerodessesarquivoseescreviumscriptbashparafazerváriasediçõesnessesarquivos.Então,porexemploeufaço:

$sed's/oldtext/newtext/'file1.txt>/tmp/foo.txt$cp-p/tmp/foo.txtfile1.txt

Nessecaso,recebooconteúdodoarquivodesejado,maspercoastags:

Pergunta : Como faço para copiar as tags do arquivo original para o arquivo editado?

    
por Peter Grill 02.03.2015 / 00:16

1 resposta

4

Quando você executa > /tmp/foo.txt , sobrescreve os conteúdos de /tmp/foo.txt com a saída de sed 's/old text/new text/' file1.txt . Como /tmp/foo.txt não existe quando você executa este comando, o bash criará esse arquivo para você e então o escreverá.

Em seguida, quando você usar o -p flag para cp , estará copiando as permissões e os atributos de /tmp/foo.txt para file1.txt e sobrescrevendo-o no processo.

Em vez disso, o que você quer fazer é sobrescrever o conteúdo de file1.txt com o conteúdo de /tmp/foo.txt , o que deve soar familiar. Executar

sed 's/old text/new text/' file1.txt > /tmp/foo.txt
cat /tmp/foo.txt > file1.txt

Observe que isso não copia nenhuma permissão ou atributo de file1.txt para /tmp/foo.txt ou vice-versa - você está mantendo os metadados existentes para file1.txt , mas modificando o conteúdo.

Nesta instância específica, você também pode usar apenas sed -i como sugerido pelo pbm.

    
por 02.03.2015 / 01:56