У меня есть этот скрипт для удаления первых 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?
Этот код:
find . -maxdepth 1 -type f -name "*.txt" -exec sed -i.bak '1,4d' {} \;
действительно работает, проблема была:
Созданный файл с командой не был выполнен executable для этого:chmod +x file.command
Затем запустите команду с терминала с помощью: ./file.command
Этот код:
find . -maxdepth 1 -type f -name "*.txt" -exec sed -i.bak '1,4d' {} \;
действительно работает, проблема была:
Созданный файл с командой не был выполнен executable для этого:chmod +x file.command
Затем запустите команду с терминала с помощью: ./file.command
Этот код:
find . -maxdepth 1 -type f -name "*.txt" -exec sed -i.bak '1,4d' {} \;
действительно работает, проблема была:
Созданный файл с командой не был выполнен executable для этого:chmod +x file.command
Затем запустите команду с терминала с помощью: ./file.command
Как уже отмечалось, 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
Как уже отмечалось, 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
Как уже отмечалось, 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