是否有一个好regex
来查找不包含某个字符的所有文件?我知道有很多东西可以找到包含匹配项的行,但我想找到一些可以找到不包含我的匹配项的文件。
答案 0 :(得分:2)
使用ls
和sed
替换所有没有扩展名的文件名(即不包含.
)NoExtension
:
ls | sed -e 's/^[^.]*$/NoExtension/g'
替换扩展名为扩展名的文件名:
ls | sed -e 's/^[^.]*$/NoExtension/g' -e 's/.*\.\(.*\)/\1/'
答案 1 :(得分:1)
for bash - 列出目录中的所有文件 - :
shopt -s extglob
ls !(*.*)
要启用extglob设置!否定了ls。
的。参数答案 2 :(得分:1)
您应放弃解析ls
读取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
答案 3 :(得分:0)
这是一个很好的衡量方法。
ls | awk '$0 !~ /\..+$/{a++}END{print a}'
答案 4 :(得分:0)
这可能对你有用(找到,GNU sed& wc):
find . -type f | sed -rn '\|.*/\.?[^.]+$|w NoExtensions' && wc -l NoExtensions
这会给你一个计数和一个清单。
N.B。包含没有扩展名的dot
个文件。