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

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

Я хочу, чтобы иметь возможность разместить файл.com.com с этим скриптом в (! d1)

Итак, я сделал файл с этим:

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

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

Я думал, что find . должен был оставаться в одной папке ...

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

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

6 ответов

Этот код:

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

действительно работает, проблема была:

Созданный файл с командой не был выполнен executable для этого:
chmod +x file.command
Затем запустите команду с терминала с помощью:
./file.command
1
ответ дан 22 May 2018 в 18:17

Этот код:

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

действительно работает, проблема была:

Созданный файл с командой не был выполнен executable для этого: chmod +x file.command Затем запустите команду с терминала с помощью: ./file.command
1
ответ дан 18 July 2018 в 06:31

Этот код:

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

действительно работает, проблема была:

Созданный файл с командой не был выполнен executable для этого: chmod +x file.command Затем запустите команду с терминала с помощью: ./file.command
1
ответ дан 24 July 2018 в 18:37

Как уже отмечалось, 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
ответ дан 22 May 2018 в 18:17

Как уже отмечалось, 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
ответ дан 18 July 2018 в 06:31

Как уже отмечалось, 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
ответ дан 24 July 2018 в 18:37

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

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