我想运行 ls 并在输出中排除某些文件。
当我运行以下命令时,我会在一行中获取所有文件:
$ ls -1
file1
file2
file3
temp
Run Code Online (Sandbox Code Playgroud)
我想以某种方式运行此命令,以便它显示
$ ls -1 <insert magic here> temp
file1
file2
file3
Run Code Online (Sandbox Code Playgroud)
Sud*_*eer 123
ls -I <filename>
Run Code Online (Sandbox Code Playgroud)
-I = 忽略文件名,即不列出指定的文件。
要忽略多个文件,请在每个文件名前添加-I。
ls -I file1 -I file2
Run Code Online (Sandbox Code Playgroud)
例如,要按文件扩展名忽略文件,请执行以下操作。
ls -I "*.jpg" -I "*.svg"
Run Code Online (Sandbox Code Playgroud)
小智 22
对我来说,如果我使用 -I 一次,它会起作用,但如果我使用两次,它就不会。例如:
ls -I *.csv作品。
但
ls -I *.csv -I *.txt不起作用并返回 txt 文件。
--ignore对我有用。这就是我需要和工作的。
ls -lhrt --ignore="*.gz" --ignore="*.1"
这将列出我排除旧备份日志的日志文件夹中的文件。
小智 14
ls --ignore={"*.jpg","*.png","*.svg"}
小智 5
我认为这会产生您正在寻找的输出:
ls -1 !(temp)
Run Code Online (Sandbox Code Playgroud)
显然,你需要
让它shopt -s extglob工作
(我启用了它,所以我想在很久以前的某个时候我发现它很有用并启用了它)。
我想你也可以使用 grep 来过滤输出:
ls -1 | grep -v '^temp$'
Run Code Online (Sandbox Code Playgroud)
使用管道和过滤器提供了更多的灵活性,以及可转移到其他命令/情况的技能,尽管对于这种特定情况,您可能对此不感兴趣。
| 归档时间: |
|
| 查看次数: |
145863 次 |
| 最近记录: |