Linux Bash:查找行尾带有空格的文件

Linux Bash:查找行尾带有空格的文件,linux,bash,trailing,Linux,Bash,Trailing,我正在寻找一个bash命令来查找每行末尾都有尾随空格的文件。我不想删除空格,只想查找文件。查找带有一个或多个尾随空格字符的文件: find . -name "*" | xargs egrep ".* +$" 查找具有尾随空格的文件 find . -type f -exec egrep -l " +$" {} \; 如果目标是列出在一行或多行中有尾随空格的文件: grep -r '[[:blank:]]$' . 要不打印行,而只打印文件名,请同时指定-l选项。这是l在单词list中,而不是数

我正在寻找一个bash命令来查找每行末尾都有尾随空格的文件。我不想删除空格,只想查找文件。

查找带有一个或多个尾随空格字符的文件:

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

查找具有尾随空格的文件

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

如果目标是列出在一行或多行中有尾随空格的文件:

grep -r '[[:blank:]]$' .

要不打印行,而只打印文件名,请同时指定
-l
选项。这是
l
在单词
list
中,而不是数字
1

有一个选项可以列出其中任何地方都不包含匹配项的文件;将其和正则表达式用于字符,而不是行尾前的空格

grep -L '[^ ]$' *

要递归目录,请添加
-r
。要搜索其他空白字符,也可以使用字符类
$'[^\t]$'
或POSIX
'[^[:blank:][]$'
搜索正则表达式。

如果问题是查找每一行末尾都有空白的文件,那么这应该可以:

grep -rL '[^[:blank:]]$' .
-L
告诉
grep
报告与模式不匹配的每个文件,并且模式正在查找换行前没有空格的行。

使用(或):


注意:与其他一些答案一样,这将列出包含一行或多行尾随空格的文件。

如果目标是当前路径中列出带有尾随空格的文件

find . -type f -exec egrep -l " +$" {} \;
grep -rli '[[:blank:]]$' .
试试这个:

find . -type f -name "* "

我相信最初的问题是找到所有行上都有尾随空格的文件。不过,最初可能只是糟糕的措词。@如果正文中没有明确说明,则肯定会遗漏,但问题标题可能会模棱两可。不过,扩展您的解决方案,
egrep-m1-v-l“*+$”
应该会找到所有在每行上都没有尾随空格的文件,如果我没有弄错的话?更简单的正则表达式:
“$”
或同时包含制表符和空格:
“[[:blank:][]$”
会导致各种警告
egrep:(path):是一个目录
。一定要特别地
-键入f
,只将文件名传递给grep。问题是“在每行的末尾”@Sorin我想这并不是OP的意图,但我承认问题确实是这样说的,从字面上看…@twalberg,这是一个不平凡的问题,这将值第三次几乎相同的价格answer@Sorin在这种情况下,也许
grep-rL'[^[:blank]]]$'
会起作用。。。搜索具有换行符前面的字符不是空白的行的文件,并报告所有与该模式不匹配的文件…OP的问题,如果按字面意思理解,绝对没有我所知道的真实世界的适用性。IMHO应该对其进行编辑,以反映常见的用例和最受欢迎的答案。毕竟,这个问题也是谷歌搜索
grep拖尾空格的最佳结果。对编辑问题本身有任何异议吗?正如其他答案所示,虽然您可以只使用
grep
,但如果您想对要检查的文件有更多的控制权,使用
find
仍然是一个好主意。,通过使用
+
而不是
\,可以使
find
命令更加高效
终止
-exec
主-这将调用
egrep
(通常)仅一次,并使用所有文件名。请注意,此答案会查找至少有一行尾随空格的文件。这肯定是有用的,可能是更常见的用例,但不是OP所要求的(至少正如他们的措辞所暗示的那样,“在每行的末尾”)。注意:虽然问题的措辞(在撰写本文时)明确要求查找每行都有尾随空格的文件,这一要求的不寻常导致了一些答案——特别是投票最多的答案——找到了一行或多行尾随空格的文件。sed-n'/\+$/p'filename做得很好。这实际上只返回所有行都有尾随空格的文件——只有一个例外:空(零字节)文件也是匹配的。此外,使用
*
(不带
-r
)将导致子目录出现警告(如果有)
-L
与POSIX不兼容,但受到广泛支持,因为GNU grep和BSD sed都实现了它。@mklement0对零大小文件的理解很好。您可以使用
-s
来抑制有关目录的警告,或者如果要遍历整个目录树(OP对任务没有具体说明),可以使用
-r.
。这将查找文件名末尾带有空格的文件