У меня есть несколько файлов в одной папке, и я хочу удалить первые строки во всех них. Если я сделаю это:
sed -i.bak '1,2000d' *.dat
, первые 2000 строк будут удалены, но тогда имя файла будет по-прежнему в форме *.dat
, а следующие 2000 строк будут удалены, и так далее, пока файл не будет пустой. Как я могу это исправить? Желательно без сложного сценария? Слишком много файлов, чтобы просто перечислить все имена файлов, они слишком сложны, чтобы напечатать их все.
Можно использовать для цикла, таким образом, команда выполняется для каждого файла точно однажды:
for file in *.dat; do sed -i.bak '1,2000d' "$file"; done
Уведомление, -i.bak
создает резервную копию исходного файла с .bak
окончание.