如何列出不带.txt文件扩展名的文本文件?


10

例如,如何复制:

ls *.txt

当我的文本文件缺少.txt结尾,并且扩展名看起来与许多其他类型的文件相同吗?

或者,是否可以仅列出没有文件扩展名的文件?

Answers:


8

要匹配根本没有扩展名的文件,可以使用以下命令

ls | grep -v '\.'

要匹配没有.txt扩展名的文件,可以使用以下命令

ls | grep -v '\.txt'

这会将当前目录中的文件列表传递给grep,这将删除其中包含.(或.txt用于第二个命令的)所有文件名。


谢谢!这回答了我的问题。另外,是否可以将同一grep工具与其他命令一起使用?例如,与待办事项?(以转换行结尾)
2013年

1
是的,grep可以与任何命令一起使用。该|符号用于将输出从一个命令传递到另一个命令,grep并将匹配具有(或不具有)特定文本的行。但是,如果要修改文本(不只是打印匹配的行),则应查看sed命令。
iBelieve

要仅查找文本文件(不包括目录和二进制文件),请使用:ls --classify | grep -v '/'.'*'
chaskes 2013年

6

使用ls -ignore="PATTERN"可以从ls结果中排除文件。

例如,ls --ignore="*.txt"忽略txt文件。


3

只需取消您的模式(注意:shopt -s extglob必填)。

要显示所有不带扩展名的文件:

ls !(*.*)

要显示非txt文件,请尝试:

ls !(*.txt)

0

该命令ls -SX1|less将按扩展名排序在单个列中,而没有扩展名的文件将移到顶部。对于具有多个文件的目录,建议像示例中那样进行更少的遍历,以限制一次输出到全屏显示。


0

我更喜欢避免将grep用于简单的列表操作。

为了避免使用grep

我建议使用ls !(*.*)查找没有文件扩展名的文件,并且

ls -I "*.gz" -I "*.tz" 要么 ls --ignore={"*.jpg","*.png","*.bmp"}

排除特定的文件扩展名

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.