【问题标题】:How to list all the files in a folder that have a certain string in their file name on Mac?如何在Mac上列出文件名中包含特定字符串的文件夹中的所有文件?
【发布时间】:2018-12-03 00:53:55
【问题描述】:

例如,我有一个文件夹new_folder,我在这个文件夹中有很多文件夹和文件。我想列出文件名中包含math 的所有文件。所以像maths.txttext.mathabc这样的文件就可以满足要求,这些文件可能在new_folder的一些子文件夹中。在new_folder 作为当前目录下是否有可以用来执行此操作的命令?

【问题讨论】:

    标签: bash macos shell unix command-line


    【解决方案1】:

    find 可能是你的朋友。

    find . -iname "*math*" -type f -ls
    

    这应该以不区分大小写的方式搜索名称中包含字符串“math”的文件(“-type f”)的当前文件夹(“.”)和所有子文件夹。它最终会打印出找到的文件的ls -l 样式列表。

    【讨论】:

      【解决方案2】:

      这取决于您是否真的在新目录中(例如,如果您使用cd 移动到那里),以及您是否只想列出它们,或者对它们做些什么。如果您在目录中并且只想列出它们,请使用:

      ls *math*
      

      如果您不在目录中,则需要指定从您所在位置到新文件夹的路径,例如:

      ls new_folder/*math*
      

      请注意,这将列出每个文件的完整路径,而不仅仅是文件名。

      如果您想对他们做点什么,请不要使用ls。如果命令可以直接对一堆文件进行操作,直接用pattern就可以了,像这样:

      dosomethingwith *math*    # If you're in the directory
      dosomethingwith new_folder/*math*    # If not
      

      如果您需要做一些需要一次一个文件的事情,请创建一个循环:

      for file in *math*; do    # Or new_folder/*math* if not in the directory
          dosomethingwith "$file"
      done
      

      【讨论】:

      • ls 只搜索当前目录。我正在查找的文件可能存在于当前文件的多个级别,例如new_folder/folder1/folder2/abc.math
      • 如果您需要搜索子文件夹,find 通常是要走的路。请参阅@7Reeds 的回答。
      【解决方案3】:

      我认为你应该使用 grep

      ls -1 | grep "math"
      

      或者你可以使用查找

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-19
        • 2013-05-01
        相关资源
        最近更新 更多