如何在“ls”中排除某些文件?

如何在“ls”中排除某些文件?

我想运行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

我不相信其他人提到过使用--hidewith 参数ls。可以这样做:

ls --hide=*.jpg

如果您想传递多个 --hide 参数,只需执行以下操作:

ls --hide=*some_pattern* --hide=*some_other_pattern*

相关内容