查找没有指定字符的文件名

时间:2013-04-04 01:05:05

标签: regex linux file unix sed

是否有一个好regex来查找包含某个字符的所有文件?我知道有很多东西可以找到包含匹配项的行,但我想找到一些可以找到包含我的匹配项的文件。

5 个答案:

答案 0 :(得分:2)

使用lssed替换所有没有扩展名的文件名(即不包含.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个文件。