如何在硬盘上查找以 开头的文件io_file
?
我试过:
grep -r io_file*`
和
find -name io_file*
find
没有返回任何东西,而grep
似乎花了很长时间却没有任何结果。
我究竟做错了什么?
答案1
find / -name 'io_file*'
第一个参数将指定搜索的起始位置。/
表示整个硬盘。若要仅在当前目录(及其子目录)中搜索,请使用:find .
如果搜索字符串包含 shell 元字符(例如星号),则必须用引号引起来。否则,它将被 shell 解析,并且永远不会被 看到find
。
答案2
find / -name 'io_file*' -type f 2>/dev/null
/: Start looking from root directory
-type f: Only search for regular files
2>/dev/null: Redirect errors to /dev/null. (handy if you are not root and
not interested in all the "access denied" messages)
请记住,grep 和 find 的作用不同。
grep 在指定的输入文件 (如果没有指定文件或给出文件名 - 则搜索标准输入) 中查找与给定模式匹配的行。默认情况下,grep 会打印匹配的行。
寻找- 在目录层次结构中搜索文件
答案3
在我看来,使用 find 搜索整个硬盘的速度很慢(访问不属于您的文件时,它还会显示很多权限错误)。如果可能,请使用locate:
locate -b 'io_file*'
如果文件比 24 小时新,您可能需要重新索引(通常它会设置每日 cronjob):
sudo updatedb
答案4
命令
# set -x
将在 shell 扩展后打印命令,以便你可以看到正在发生的事情
# find . -name letter.*
+ find . -name letter.rtf
...现在您可以看到 shell 正在将参数名称扩展为letter.rtf
,因为我的当前目录包含一个letter.rtf
与模式匹配的文件。
引用该模式(在这种情况下双引号也有效)将停止 shell 扩展
# find . -name 'letter.*'
+ find . -name 'letter.*'
要关闭它,请使用
# set +x
您还可以-x
使用舍邦线查看 shell 脚本正在做什么,这可以极大地帮助调试。
#!/bin/bash -x