例如,我如何复制:
ls *.txt
当我的文本文件缺少.txt
结尾时,并且扩展名与许多其他类型的文件相同?
或者,是否可以专门列出没有文件扩展名的文件?
答案1
要匹配根本没有扩展名的文件,可以使用命令
ls | grep -v '\.'
要匹配没有.txt
扩展名的文件,可以使用命令
ls | grep -v '\.txt'
这会将当前目录中的文件列表传递给grep
,后者将删除所有包含.
(或.txt
对于第二个命令)的文件名。
答案2
您ls -ignore="PATTERN"
可以从 ls 结果中排除文件。
例如ls --ignore="*.txt"
忽略txt文件。
答案3
只需否定你的模式(注意:shopt -s extglob
是必需的)。
显示所有不带扩展名的文件:
ls !(*.*)
要显示非txt
文件,请尝试:
ls !(*.txt)
答案4
我倾向于避免使用 grep 进行简单的列表操作。
为了避免使用grep
,
我建议使用ls !(*.*)
查找没有文件扩展名的文件,并且
ls -I "*.gz" -I "*.tz"
或者ls --ignore={"*.jpg","*.png","*.bmp"}
排除特定文件扩展名