Terminal sed no arquivo .command

0

Eu tenho este script para remover as primeiras 4 linhas de cada arquivo em uma pasta se a extensão for .txt .

Eu quero colocar um file.command com esse script na mesma pasta para que eu possa clicar duas vezes nele e executá-lo.

Então eu fiz um arquivo com isso:

#!/bin/bash

find . -type f -name "*.txt" -exec sed -i.bak '1,4d' {} \;

Se eu executar o arquivo, todos os meus arquivos do Mac txt serão removidos 4 linhas: (

Eu achei que o find . deveria permanecer na mesma pasta ...

Como eu corrijo para que o comando seja executado APENAS na pasta que o file.command é?

    
por Mr.Web 20.09.2017 / 12:49

2 respostas

1

Este código:

find . -maxdepth 1 -type f -name "*.txt" -exec sed -i.bak '1,4d' {} \;

realmente funciona, a questão era:

  1. O arquivo criado com o comando não foi feito executable para isso:

    chmod +x file.command
    
  2. Em seguida, execute o comando no terminal com:

    ./file.command
    
por George Udosen 20.09.2017 / 19:42
0

Como foi comentado, find desce em subdiretórios por padrão.

Faça isso:

#!/bin/bash
cd "$(dirname "$0")"          # change directory to the location of the script
for file in *.txt; do         # and iterate over the .txt files
    sed -i.bak '1,4d' "$file"
done
    
por glenn jackman 20.09.2017 / 18:30