tail -c +32
виводить свій вхід мінус перші 31 байт. (Так, аргумент вимкнено одним.) Щоб редагувати файл на місці, використовуйте губку в циклі, або якщо у вас її немає і не хочете турбувати, виконайте свою роботу в оболонці:
for x in /foo/*; do tail -c +32 "$x" | sponge "$x"; done
for x in /foo/*; do tail -c +32 "$x" >"$x.new" && mv "$x.new" "$x"; done
Якщо команди перериваються з будь-якої причини (наприклад, відключення живлення), може бути важко зрозуміти, де ви зупинилися. Запис нових файлів в окремий каталог полегшить ситуацію.
mkdir /foo.tmp
cd /foo
for x in *; do tail -c +42 -- "$x" >"/foo.tmp/$x" && rm -- "$x"; done
mv /foo.tmp/* /foo
rmdir /foo.tmp
Якщо файли дійсно великі (як, наприклад, досить великі, що наявність двох копій навіть однієї є проблемою), ви можете використовувати один із прийомів, згаданих у цій темі .