任意のファイル/ディレクトリ名を検索したいが、同じ場所に検索文字列を含むファイルパスのみをリストしたいと思います。特に、ディレクトリ内のすべてのファイルが検索文字列と一致するわけではありません。
以下は例のlocate -i flatpak
リストです。
/etc/flatpak
/etc/dbus-1/system.d/org.freedesktop.Flatpak.SystemHelper.conf
/etc/flatpak/remotes.d
/etc/profile.d/flatpak.sh
/home/simon/.cache/gnome-software/flatpak/installation-tmp/repo/objects/74
/home/simon/.cache/gnome-software/flatpak/installation-tmp/repo/objects/75
/home/simon/.cache/gnome-software/flatpak/installation-tmp/repo/objects/76
/home/simon/.cache/gnome-software/flatpak/installation-tmp/repo/objects/77
/home/simon/.cache/gnome-software/flatpak/installation-tmp/repo/objects/78
/home/simon/.cache/gnome-software/flatpak/installation-tmp/repo/objects/79
/home/simon/.cache/gnome-software/flatpak/installation-tmp/repo/objects/7a
/home/simon/.cache/gnome-software/flatpak/installation-tmp/repo/objects/7b
/home/simon/.cache/gnome-software/flatpak/installation-tmp/repo/objects/7c
/home/simon/.cache/gnome-software/flatpak/installation-tmp/repo/objects/7d
/var/lib/flatpak
/var/lib/flatpak/.changed
/var/lib/flatpak/.removed
/var/lib/flatpak/app
/var/lib/flatpak/appstream
/var/lib/flatpak/exports
/var/lib/flatpak/repo
/var/lib/flatpak/runtime
しかし、私は次のような検索結果が欲しい。
/etc/flatpak
/etc/dbus-1/system.d/org.freedesktop.Flatpak.SystemHelper.conf
/etc/profile.d/flatpak.sh
/home/simon/.cache/gnome-software/flatpak
/var/lib/flatpak
この目的に最適なツールは何ですか?locate
、find
、fd-find
?
ベストアンサー1
flatpak
他のパスコンポーネントではなくファイル名からのみ検索したいと思われるので、-b
/--basename
オプションを使用できます。
だから:
locate -ib flatpak
-r
別のアプローチは、/オプションを使用--regex
して次のように書くことです。
locate -ir 'flapak[^/]*$'
ファイルパスの終わりを除いて、その後flatpak
に必要な数の文字が続くことがあります。/
しかし、これは見逃す可能性がありますflatpak
。