Bash:在行尾查找带有尾随空格的文件
Posted
技术标签:
【中文标题】Bash:在行尾查找带有尾随空格的文件【英文标题】:Bash: find files with trailing spaces at the end of the lines 【发布时间】:2012-06-27 22:27:30 【问题描述】:我正在寻找一个 bash 命令来查找每行末尾有尾随空格的文件。我对删除空格不感兴趣,只是对查找文件感兴趣。
【问题讨论】:
注意:虽然问题的措辞(在撰写本文时)明确要求在每一行上查找带有尾随空格的文件,但这一要求的不寻常导致在某些答案中 - 特别是投票最多的答案 - 查找包含 一个或多个 行且带有尾随空格的文件。 sed -n '/ \+$/p' 文件名 【参考方案1】:查找包含尾随空格的文件。
find . -type f -exec egrep -l " +$" \;
【讨论】:
虽然您可以只使用grep
,但正如其他答案所证明的那样,使用find
可能仍然是一个好主意,如果您想更多地控制要检查的文件。,您可以通过使用+
而不是\;
来终止-exec
主节点,使find
命令更有效——这将调用egrep
(通常)一次,所有文件名。
请注意,此答案会找到 至少 1 行带有尾随空格的文件。这绝对是有用的,并且可能是更常见的用例,但不是 OP 所要求的(至少正如他们的措辞所暗示的那样,“在 每个 行的末尾”)。跨度>
【参考方案2】:
如果目标是列出在一行或多行中有尾随空格的文件:
grep -r '[[:blank:]]$' .
要不打印行,只打印文件名,还要指定-l
选项。那是l
,就像单词list
一样,而不是数字1
。
【讨论】:
问题是“在每一行行的末尾” @Sorin 我猜这不是 OP 的意图,但我承认这个问题确实是这样说的,从字面上看...... @twalberg,这使得它成为一个不简单的问题,值得第三个几乎相同的答案 @Sorin 在这种情况下,grep -rL '[^[:blank]]$'
可能会工作...不匹配那个模式...
OP 的问题,如果从字面上理解,我所知道的绝对没有现实世界的适用性。恕我直言,应该对其进行编辑以反映常见用例以及最受好评的答案。问题毕竟也是grep trailing whitespace
的最高谷歌搜索结果。对这样编辑问题有任何反对意见吗?【参考方案3】:
查找带有一个或多个尾随空格字符的文件:
find . -name "*" | xargs egrep ".* +$"
【讨论】:
我相信最初的问题是找到所有行都有尾随空格的文件。不过,最初可能只是措辞不好。 @Nit 它确实在正文中说得很清楚,一定是错过了,但问题标题可能模棱两可。 不过,扩展您的解决方案,egrep -m1 -v -l ".* +$"
应该找到所有不在每一行都有尾随空格的文件,如果我没记错的话?
更简单的正则表达式:' $'
或同时包含制表符和空格:'[[:blank:]]$'
引起各种警告egrep: (path): Is a directory
。请务必指定 -type f
仅将文件名传递给 grep。【参考方案4】:
可以选择列出其中不包含任何匹配项的文件;对行尾之前的空格以外的字符使用它和正则表达式。
grep -L '[^ ]$' *
要递归目录,请添加-r
。要同时搜索其他空白字符,请使用字符类 $'[^ \t]$'
或 POSIX '[^[:blank:]]$'
作为正则表达式。
【讨论】:
做得很好。这实际上只返回所有行都有尾随空格的文件 - 除了一个例外:empty(零字节)文件也匹配。此外,使用*
(不带-r
)将导致子目录警告(如果有)。 -L
不符合 POSIX,但受到广泛支持,因为 GNU grep 和 BSD sed 都实现了它。
@mklement0 很好地了解了零大小的文件。您可以使用-s
来抑制有关目录的警告,或者如果您想遍历整个目录树(OP 对任务不明确),则可以使用-r .
。【参考方案5】:
使用ack
(或ag
):
ack -l ' \n'
注意:与其他一些答案一样,这将列出包含 一行或多行行且带有尾随空格的文件。
【讨论】:
【参考方案6】:如果目标是在当前路径中列出文件并带有尾随空格:
grep -rli '[[:blank:]]$' .
【讨论】:
【参考方案7】:如果问题是从字面上查找每行末尾都有空格的文件,那么这应该可以:
grep -rL '[^[:blank:]]$' .
-L
告诉grep
报告与该模式不匹配的每个文件,并且该模式正在寻找在换行符之前没有空白的行。
【讨论】:
【参考方案8】:试试这个:
find . -type f -name "* "
【讨论】:
这将找到文件名末尾有空格的文件以上是关于Bash:在行尾查找带有尾随空格的文件的主要内容,如果未能解决你的问题,请参考以下文章