Help us understand the problem. What is going on with this article?

複数ファイルの改行コードを一括置換しちゃう

More than 5 years have passed since last update.

gitを使っていてたまに発生する現象。
それは改行コードがCRLFに変換されること。。。
違うOSを使って共同作業をしていてこれが発生しました。
(WindowsとMac)
.shの改行コードがCRLFになっていると.shが実行できなくなるので、
手っ取り早く改行コードを置換してしまいましょう。

置換
# .shだけLFに置換
find . -name \*.sh -type f | xargs -n 10 nkf -Lu --overwrite

# ファイルは全てLFに置換
find . -type f | xargs -n 10 nkf -Lu --overwrite

コマンド解説

改行コード確認
od -c replace-schema.sh
# 以下の表示になってる部分が改行コード
# \r \n => CRLF
# \n    => LF
ファイル検索
find . -type f -name \*.sh  
# -type f => ファイルのみ検索
# -name \*.sh => .shのみ検索

# -nameの複数指定
find . \( -name \*.c -o -name \*.cc -o -name \*.h -o -name \*.hh \) -print

参考:http://d.hatena.ne.jp/stakizawa/20080522/t1

豆知識
# 引数を10個ずつ渡す
xargs -n 10 

# ファイルの改行コードをLFにして上書きする
nkf -Lu --overwrite
# -Lu => LF   => UNIX
# -Lw => CRLF => Windows
# -Lm => CR   => Mac

# nkfはMacに入ってなかったので、brewで入れた
# brew install nkf

原因の特定する際には

.shを実行する際には-xvオプションをつける。
これで処理の詳細が見えたりする。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away