grepはコマンドライン上でテキスト検索を可能にするユーティリティーです。元はUnixのために用意されたものです。
UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。
Q&A
解決済
4回答
3724閲覧
総合スコア35
0グッド
0クリップ
投稿2021/11/10 02:26
0
unix環境で改行コードがCRLFのファイルの一覧を取得したいと思っています。
現在は以下のコマンドで試していますが、ファイル名というより改行コードの行が表示されてしまいます。これでもいいのですが、どのファイルがCRLFなのかが一目見ただけでは不明なので、ご教授いただければと思います。
find ./ -type f | xargs cat -v | grep '^M'
以上よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
2021/11/10 02:37
2021/11/11 08:32
回答4件
ベストアンサー
grepのみで可能です。
sh1# sh/bash/csh/tcsh/zsh 2grep -Ilrs `printf "\r\n"` .
sh
1# sh/bash/csh/tcsh/zsh 2grep -Ilrs `printf "\r\n"` .
fish1# fish 2grep -Ilrs (printf "\r\n") .
fish
1# fish 2grep -Ilrs (printf "\r\n") .
GNU grep 3.7, BSD grep 2.5.1の両方の実装で動作を確認しました。
-I, --binary-files=without-matchでバイナリを無視し、-l, --files-with-matchesでファイル名のみを表示し、-r, --recursiveでファイルを再帰的に検索し、-s, --no-messagesでエラーメッセージを消しています。改行コードの展開にはビルトインコマンドであるprintfを使用しました。最後に現在のディレクトリを意味する.をファイル用のパターンとして与えています。
-I, --binary-files=without-match
-l, --files-with-matches
-r, --recursive
-s, --no-messages
.
投稿2021/11/10 02:54
総合スコア248
回答へのコメント
2021/11/11 08:29
GNU grep を利用する場合は -I オプション(バイナリファイルを除外)と、-m 1 オプション(1回マッチしたら停止)、-r(recursive search)を付けるとよろしいかと思います。
-I
-m 1
-r
bash1bash$ grep -I -r -l -m 1 -e $'\r$' .
bash
1bash$ grep -I -r -l -m 1 -e $'\r$' .
投稿2021/11/10 03:41
総合スコア21527
2021/11/10 11:18
2021/11/10 11:23
find ./ -type f | xargs file | grep 'with CRLF' | sed -e 's/:..*//'
投稿2021/11/10 02:44
総合スコア4157
2021/11/11 08:30
... | xargs grep -l "\r$" でいかがでしょうか。
... | xargs grep -l "\r$"
投稿2021/11/10 02:38
総合スコア22019
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
unix環境における改行コードがCRLFのファイル一覧の取得方法について