Добавить консоль в файл в начале
Для постгенерации fake-module-bpy (для блендера Python)... но язык не имеет значения. Итак, я использую следующую консольную команду
]$ ls | grep -v _init_ | sed -E 's/^([a-zA-Z0-1]+)/import \1/' >> __init__.py
Он будет записывать все файлы Python в __init__.py как импорт (исключая сам __init__.py)
Можно ли написать / добавить не конец, а начало файла?
2 ответа
Все что grep
может быть сделано в течение sed
: см. этот урок. В этом случае вы добавляете -e '/PATTERN/d'
воспроизвести grep -v
опция:
ls | sed -E -e '/_init_/d' -e 's/^([a-zA-Z0-1]+)/import \1/' >> __init__.py
Вы можете устранить ls
используя вместо этого:
for f in *; do echo "$f"; done | sed -E -e '/_init_/s' -e 's/^([a-zA-Z0-1]+)/import \1/' >> __init__.py
Это устраняет необходимость использования внешней программы и обработки любой дополнительной информации или флагов, которые могут быть добавлены ls
по умолчанию.
Есть несколько способов добавить файлы в обратном порядке:
- Если вы используете
ls
, затемls -r
выведет файлы в обратном порядке. - Если вы используете
for f in *; ...
, затем направьте выход черезsort -r
, - Ты можешь использовать
tac
чтобы затем изменить порядок строк в выходных данных. - Долгосрочный способ - вывести каждый файл в однострочный файл, добавить к нему текущий список вывода, а затем переместить его, чтобы перезаписать текущий список вывода.
Это отвечает на ваш второй вопрос.
Вот небольшой трюк, чтобы написать содержимое в начале файла с sed
:
sed -i '1s/^/to start of file\n/' existing_file.txt
Может быть, с небольшой модификацией это то, что вам нужно.