ファイルの最初のnバイトを削除する

ファイルの最初のnバイトを削除する

私は深刻な問題に直面しており、私が考えることができる解決策はすべて複雑です。私のUNIX / Linux経験に基づいて〜しなければならない簡単な方法です。

各.txtファイルの最初の31バイトを削除したいと思います/foo/。各ファイルの長さは十分です。まあ、誰かが私が想像できない非常に簡単な解決策を提示すると確信しています。たぶんちょっと?

ベストアンサー1

for file in /foo/*
do
  if [ -f "$file" ]
  then
    dd if="$file" of="$file.truncated" bs=31 skip=1 && mv "$file.truncated" "$file"
  fi
done

またはギルスの提案に感謝します。

for file in /foo/*
    do
      if [ -f $file ]
      then
        tail +32c $file > $file.truncated && mv $file.truncated $file
      fi
    done

注: Posix tail は "+32c" の代わりに "-c +32" を指定しますが、Solaris のデフォルト tail はそれを好みません。

   $ /usr/bin/tail -c +32 /tmp/foo > /tmp/foo1
    tail: cannot open input

/usr/xpg4/bin/tailどちらの構文も大丈夫です。

元のファイル権限を維持するには

... && mv "$file.truncated" "$file"

渡す

... && cat "$file.truncated" "$file" && rm "$file.truncated"

おすすめ記事