Я пытался удалить вторую и третью строки из примерно 50 текстовых файлов.
Мне нужно сохранить заголовки, но удалить строки «1» и «2», то есть мне нужно удалить вторую и третью строки каждого текстового файла. Я пытался использовать:
sed -i.bak '2,3d' * .txt
Но только удаляет строки из первого файла в папке. Как я могу применить это ко всем файлам в папке?
Вот два пути, выбор зависит от того, сколько файлов Вы имеете, какой длины имена, и имеют ли имена файлов "забавные символы.
for i in *.txt ; do
sed -i.bak '2,3d' "$i"
done
Или, сложный случай:
find . -maxdepth 1 -type f -name '*.txt' -print0 | \
xargs -0 -r -n 1 sed -i.bak '2,3d'