我想运行ls
并排除输出中的某些文件。
当我运行以下命令时,我获得所有文件,每个文件都在单独的行上:
$ ls -1
file1
file2
file3
temp
我想以某种方式运行此命令以便它显示:
$ ls -1 <insert magic here> temp
file1
file2
file3
答案1
ls -I <filename>
-I
:忽略文件名,即不列出指定的文件。
要忽略多个文件,-I
在每个文件名前添加一个。
ls -I file1 -I file2
例如,要根据文件扩展名忽略文件,请执行以下操作。
ls -I "*.jpg" -I "*.svg"
答案2
对我来说,如果我使用-I
一次,它就会起作用,但如果我使用两次,它就不会起作用。例如:
这有效:
ls -I *.csv
但:
ls -I *.csv -I *.txt
不起作用,
.txt
而是返回文件。
--ignore
对我来说很管用。这是我需要的和有效的:
ls -lhrt --ignore="*.gz" --ignore="*.1"
上面将列出我的log
文件夹中的文件(不包括旧备份日志)。
答案3
您还可以使用:
ls --ignore={"*.jpg","*.png","*.svg"}
答案4
我不相信其他人提到过使用--hide
with 参数ls
。可以这样做:
ls --hide=*.jpg
如果您想传递多个 --hide 参数,只需执行以下操作:
ls --hide=*some_pattern* --hide=*some_other_pattern*