Терминал sed в .command файл

У меня есть этот сценарий для удаления первых 4 строк каждого файла в папке, если их расширение .txt.

Я хочу смочь поместить file.command с этим сценарием в той же папке, таким образом, я могу просто дважды щелкнуть по нему и выполнить его.

Таким образом, я сделал файл с этим:

#!/bin/bash

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

Если я петляю, у меня есть весь мой Mac txt файлы 4 удаленные строки :(

Я думал find . был предназначен для пребывания в той же папке...

Как я фиксирую его, чтобы иметь команду, выполненную ТОЛЬКО в папке, которая file.command?

0
задан 20 September 2017 в 03:49

2 ответа

Этот код:

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

на самом деле работы, проблема была:

  1. созданный файл с командой не был сделан executable для этого, сделайте:

    chmod +x file.command
    
  2. Затем выполняет команду от терминала с:

    ./file.command
    
1
ответ дан 2 November 2019 в 05:45

Как был прокомментирован, find убывания в подкаталоги по умолчанию.

Сделайте это вместо этого:

#!/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
0
ответ дан 2 November 2019 в 05:45

Другие вопросы по тегам:

Похожие вопросы: