我正在我的.bashrc文件中编写一个函数,它可以帮助我根据作为参数传递给函数的字符串查找文件:
# ~/.bashrc
function search {
find . -iname "*$1*" -printf "%fn"
}
这个功能很好。它会打印出我所在的目录下具有给定字符串的所有文件,以及所有子目录中具有相同给定字符串的所有文件。只有它只是打印出每个文件而不是它的路径。
例如,如果我有一个包含一些子文件夹和文件的文件夹,如果它们位于任何子文件夹下,那么如果它会打印出每个文件的路径,那么这个函数会更有帮助。
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
所以我的任务是:如何修改我的搜索功能,以便它打印出我可能正在搜索的文件的路径?
谢谢!
function search {
find `pwd` -iname "*$1*"
}
将查找行更改为:
find . -iname "*$1*" -printf "$(pwd)/%Pn"
感谢@JKB和@acro444。他们的回答帮助我修改了我的搜索功能。我正在发布我的答案,因为我决定采用与他们发布时略有不同的解决方案,但这要归功于他们的贡献:
# ~/.bashrc
function search {
find . -iname "*$1*" -printf "%Pn"
}
我这样做是因为我不在乎总是在路径的其余部分前面看到/home/myusername/...
。我知道我在我的/home/username/somefolder
目录中,并且看到可能出现的每个文件总是/home/username/.....
,我认为这是太多的"噪音",而且没有必要。
再次感谢您的帮助!
干杯!