2012-06-26 18 views
14

各行の最後にスペースがあるファイルを見つけるためのbashコマンドを探しています。私はスペースを削除するのではなく、ファイルを見つけることに興味があります。Bash:行の末尾に末尾にスペースがあるファイルを見つける

+2

注:(これを書いているように)質問の文言は明確にファイルを見つけるために呼び出している間_eachとすべての行_の末尾に空白があると、この要件の珍しいことが、いくつかの答え、特に後に空白をつけた_one以上の行を持つファイルを見つけることになりました。 – mklement0

+0

sed -n '/ \ + $/p' filename – Luv33preet

答えて

1

は、一つ以上の末尾のスペース文字を含むファイルを検索します。

find . -name "*" | xargs egrep ".* +$" 
+0

元の質問は、すべての行に末尾にスペースがあるファイルを見つけることだと思います。しかし、もともと悪い言葉かもしれません。 – Nit

+0

@Nitそれは体の中ではっきりと言うが、それを見逃しているに違いないが、質問ヘッダはあいまいである可能性がある。 – matcheek

+0

しかし、あなたのソリューションでは、 'egrep -m1 -v -l"。* + $ "'は**私が間違っていないならば、**各行に後続のスペースを持たない**すべてのファイルを見つけるべきですか? – Nit

25

は、末尾のスペースをしているファイルを検索します。

find . -type f -exec egrep -l " +$" {} \; 
+0

他の答えが示しているように 'grep'だけでやっていますが、' find'を使って調べるファイルをもっと細かく制御したい場合は、 'find'を使うことができます。' find'コマンドを ' '-exec'プライマリを終了するには' \; 'の代わりに' +; 'を使います。これは' _rep '(通常は)_once_のみを_all_ファイル名で呼び出します。 – mklement0

+0

この回答は、空きスペース。これは間違いなく有用であり、おそらくより一般的なユースケースですが、OPが要求したものではありません(少なくとも、 "_each_行の終わり"という言葉が意味するように)。 – mklement0

8

目標は、一つ以上の行に空白を末尾にしているファイルを一覧表示する場合:

grep -r '[[:blank:]]$' . 
ラインを印刷し、印刷だけで、ファイル名だけで、また -lオプションを指定しないこと

。それはのようにlであり、数字は1ではありません。

+1

質問は「**各行の末尾に」 – Sorin

+1

@ソーリン私はそれがOPの意図ではないと推測するつもりですが、質問が実際に言いました。 。 – twalberg

+0

@ twalberg、それはそれがそれほど些細な質問ではない、それは3番目のほぼ同じ答えの価値があるでしょう – Sorin

1

どこにも一致するものが含まれていないファイルをリストするオプションがあります。その行と行末の直前のスペース以外の文字に対して正規表現と正規表現を使用してください。

grep -L '[^ ]$' * 

ディレクトリを繰り返すには、-rを追加します。他の空白文字も検索するには、文字クラス$'[^ \t]$'またはPOSIX '[^[:blank:]]$'を正規表現に使用します。

+0

うーん。これは本当に、行の末尾に空白があるすべてのファイルを返します。ただし、1つの例外を除いて、_empty(ゼロバイト)ファイルも一致します。また '*'( '-r'を指定しないで)を使うと、もしあれば、サブディレクトリの警告が出ます。 '-L'はPOSIX準拠ではありませんが、GNU grepとBSD sedの両方がそれを実装しているので、広くサポートされています。 – mklement0

+1

@ mklement0ゼロサイズのファイルについてうまくキャッチします。 '-s'を使ってディレクトリに関する警告を抑止できます。ディレクトリツリー全体をトラバースする場合は' -r .'を使います(OPはタスクについては特定されていません)。 – tripleee

0

質問はすべての単一の行の末尾に空白を持つファイルを検索し、文字通りであれば、これは動作するはずです:

grep -rL '[^[:blank:]]$' . 

-Lは、パターンに一致しないすべてのファイルを報告しgrepを伝えますパターンは、改行の直前に空白がない行を探しています。 ack(またはag)を使用して

0

ack -l ' \n' 

注:他の回答の一部のように、これは末尾のスペースを持つ一つ以上の行を含むファイルがリストされます。

1

目標は、電流経路空白末尾リストファイルにある場合:

grep -rli '[[:blank:]]$' . 
関連する問題