Kau*_*kar 12 shell terminal command-line ls sed
我已经阅读了该man
页面ls
,我找不到列出所有与文件选择器不匹配的选项.你知道怎么做这个操作吗?
例如:假设我的目录是这样的:
> ls
a.txt b.mkv c.txt d.mp3 e.flv
Run Code Online (Sandbox Code Playgroud)
现在我想做一些能做到以下事情的事情
> ls -[SOME_OPTION] *.txt
b.mkv d.mp3 e.flv
Run Code Online (Sandbox Code Playgroud)
有这样的选择吗?
如果没有,有没有办法将输出管道输出ls
到另一个功能(可能sed
),只显示我想要的功能?
我不知道该怎么做,但我想它会是这样的:
> ls | sed [SOMETHING]
Run Code Online (Sandbox Code Playgroud)
我真的应该学习如何使用sed
,awk
和grep
,但我一直在坚持理解如何编写正则表达式.我清楚地理解正则表达式的概念,但我对使用不同语法的正则表达式感到困惑.
任何帮助将非常感激!
编辑:
我忘了提,我正在运行的Mac OS X,这样的功能可以是在其他的答案为UNIX/Linux外壳讨论的略有不同(因此我的一些困惑与sed
,awk
和grep
).
小智 45
这可能会对你有所帮助
ls --ignore=*.txt
Run Code Online (Sandbox Code Playgroud)
它不会在您的目录中显示.txt文件.
ls只是列出了要使用的参数。在ls看到之前将其*.txt
扩展为,请尝试。a.txt c.txt
echo *.txt
要使用sed进行操作,您可以从其输入中删除该模式,例如:
ls | sed '/\.txt$/d'
Run Code Online (Sandbox Code Playgroud)
将删除所有以结尾的行.txt
。
使用bash和zsh,可以使shell进行反向扩展,使用bash可以是:
ls !(*.txt)
Run Code Online (Sandbox Code Playgroud)
zsh:
ls *~*.txt
Run Code Online (Sandbox Code Playgroud)
需要注意的是两壳需要扩展水珠选项启用,shopt -s extglob
有庆典和setopt extendedglob
与zsh中。
一种使用方法find
:
find . -maxdepth 1 -type f -not -name "*.txt" -printf "%f\n"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32039 次 |
最近记录: |