regex
找到所有不包含某个字符的文件有什么好处吗?我知道有很多可以找到包含匹配项的行,但我想要一些能够找到所有不包含我的匹配项的文件的东西。
user1598622
问问题
223 次
5 回答
2
使用ls
andsed
将所有没有扩展名的文件名(即不包含 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
您应该丢弃所有解析ls
read 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 回答