我想查找名称中包含 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 globstar
in bash
)来执行文件名的递归匹配:
for fname in ./**/*abc*; do
# do something with "$fname"
done
使用zsh
shell,还要确保我们只匹配常规文件的名称(即不匹配目录等):
for fname in ./**/*abc*(.); do
# do something with "$fname"
done
有关的:
答案2
如果你想查找文件中的所有 abc 名称: $ grep -R abc ./Direction
或者如果你想查找包含 abc 的文件: $ ls -1 | grep abc 或 $ lsABC。/方向