如何在 Bash 中搜索我不知道名称的文件?
How to search for a file which name I don't know in Bash?
我知道哪个目录包含一个我不知道名称的文件,但我知道它的名称结尾(例如,.txt),而且我知道目录中正好有一个这样结尾的文件。
我尝试了以下代码:file=grep -w /*.txt
当 $1 是目录地址时根本没有帮助,file=/*.txt
也没有。
有什么方法可以达到我的要求吗?
您要查找的是 find
命令。
你可以这样使用它(确保你在你想搜索的目录中):
find . -iname '*.txt'
使用命令man find
了解更多关于命令的信息。
/usr/bin/find directory_name -iname "*.txt"
如果你想对那些搜索到的文件进行操作,你甚至可以使用 find -exec
如果您知道准确的目录和一个不匹配任何其他文件的通配符,您可以运行一个只循环一次的循环。
for file in ""/*.txt; do
: "$file" refers to your file here
done
当然,在很多情况下,你并不需要知道准确的文件名。如果你想 运行 grep
匹配你的通配符的文件,就这样做:
grep "xyzzy" ""/*.txt
我知道哪个目录包含一个我不知道名称的文件,但我知道它的名称结尾(例如,.txt),而且我知道目录中正好有一个这样结尾的文件。
我尝试了以下代码:file=grep -w /*.txt
当 $1 是目录地址时根本没有帮助,file=/*.txt
也没有。
有什么方法可以达到我的要求吗?
您要查找的是 find
命令。
你可以这样使用它(确保你在你想搜索的目录中):
find . -iname '*.txt'
使用命令man find
了解更多关于命令的信息。
/usr/bin/find directory_name -iname "*.txt"
如果你想对那些搜索到的文件进行操作,你甚至可以使用 find -exec
如果您知道准确的目录和一个不匹配任何其他文件的通配符,您可以运行一个只循环一次的循环。
for file in ""/*.txt; do
: "$file" refers to your file here
done
当然,在很多情况下,你并不需要知道准确的文件名。如果你想 运行 grep
匹配你的通配符的文件,就这样做:
grep "xyzzy" ""/*.txt