查找具有特定模式的文件

查找具有特定模式的文件

我想查找名称中包含 abc 的文件。

例如:

Dozain123.ctabcln_WbLogReq.log'

Dozain123.ctabcln_WbLogReq123.log

Dozain123.ctabcln_WbLogReq456.log

Dozain123.ctabcln_WbLogReq341.log

我应该使用哪个命令?

答案1

如果它的文件位于当前目录您想要列出的:

ls ./*abc*

要循环这些文件:

for fname in ./*abc*; do
    # do something with "$fname"
done

如果您想在当前目录或某个子目录中的任何位置(递归地)找到它们:

find . -type f -name '*abc*' -print

(这假设您要查找的所有名称都是常规文件的名称,即不是目录名称等。)

如果你想做点什么这些名称:

find . -type f -name '*abc*' -exec sh -c '
    for fname do
        # do something with "$fname" here
    done' sh {} +

使用**某些 shell 中可用的通配模式(默认情况下 inzsh和 with shopt -s globstarin bash)来执行文件名的递归匹配:

for fname in ./**/*abc*; do
    # do something with "$fname"
done

使用zshshell,还要确保我们只匹配常规文件的名称(即不匹配目录等):

for fname in ./**/*abc*(.); do
    # do something with "$fname"
done

有关的:

答案2

如果你想查找文件中的所有 abc 名称: $ grep -R abc ./Direction

或者如果你想查找包含 abc 的文件: $ ls -1 | grep abc 或 $ lsABC。/方向

相关内容