2

regex找到所有包含某个字符的文件有什么好处吗?我知道有很多可以找到包含匹配项的行,但我想要一些能够找到所有包含我的匹配项的文件的东西。

4

5 回答 5

2

使用lsandsed将所有没有扩展名的文件名(即不包含 a .)替换为NoExtension

ls | sed -e 's/^[^.]*$/NoExtension/g'

用扩展名替换具有扩展名的文件名:

ls | sed -e 's/^[^.]*$/NoExtension/g' -e 's/.*\.\(.*\)/\1/'
于 2013-04-04T01:22:16.240 回答
1

对于 bash - 列出目录中的所有文件 - :

shopt -s extglob
ls !(*.*)

需要 extglob 设置才能启用!这否定了. ls的论据。

于 2013-04-04T01:20:40.260 回答
1

您应该丢弃所有解析lsread here输出的答案,以了解原因。该工具find非常适合这一点。

# Show files in cwd
$ ls
file  file.txt

# Find the files with an extension 
$ find -type f  -regex '.*/.*\..*$'
./file.txt

# Invert the match using the -not option
$ find -type f  -not -regex '.*/.*\..*$'
./file
于 2013-04-04T19:08:07.307 回答
0

还有一个 awk 解决方案,可以很好地衡量。

ls | awk '$0 !~ /\..+$/{a++}END{print a}'
于 2013-04-04T02:31:59.633 回答
0

这可能对您有用(查找,GNU sed & wc):

find . -type f | sed -rn '\|.*/\.?[^.]+$|w NoExtensions' && wc -l NoExtensions

这会给你一个计数和一个列表。

包括不带扩展名的NBdot文件。

于 2013-04-04T08:34:39.547 回答