我正在我的.bashrc文件中编写一个函数,它帮助我根据作为参数传递给函数的字符串查找文件:
# ~/.bashrc
function search {
find . -iname "*$1*" -printf "%f\n"
}
这个功能很好。它打印出我所在目录下具有给定字符串的所有文件,以及所有子目录中具有相同给定字符串的所有文件。只是打印出每个文件而不是它的路径。
例如,如果我有一个包含某些子文件夹和文件的文件夹,如果它们打印出每个文件的路径(如果它们位于任何子文件夹下),那么这个功能会更有帮助。
F.ex。如果我有一个名为Folder/
的文件夹和一些名为whatever_num
并且正在运行search thisandthat
的子文件夹会吐出一个类似这样的列表:
$ search thisandthat
some-file-containing-thisandthat-in-its-filename.ext
whatever_1/path/to/some-file-containing-thisandthat-in-its-filename.ext
whatever_2/path/to/some-file-containing-thisandthat-in-its-filename.ext
所以我的问题是:如何修改我的搜索功能,以便打印出我可能要搜索的文件的路径?
谢谢!
答案 0 :(得分:2)
function search {
find `pwd` -iname "*$1*"
}
答案 1 :(得分:1)
将查找行更改为:
find . -iname "*$1*" -printf "$(pwd)/%P\n"
答案 2 :(得分:0)
感谢@JKB和@ acro444。他们的回答帮助我修改了我的搜索功能。我发布了自己的答案,因为我决定采用与他们发布时略有不同的解决方案,但这要归功于他们的贡献:
# ~/.bashrc
function search {
find . -iname "*$1*" -printf "%P\n"
}
我是这样做的,因为我不关心在路径的其余部分前面一直看到/home/myusername/...
。我知道我在/home/username/somefolder
目录中并且始终/home/username/.....
看到可能出现的每个文件只是太多“噪音”我认为并且没有必要。
再次感谢您的帮助!
干杯!