すべてのファイルを検索しますが、結果に一度だけ一致するもののみを一覧表示します。

すべてのファイルを検索しますが、結果に一度だけ一致するもののみを一覧表示します。

任意のファイル/ディレクトリ名を検索したいが、同じ場所に検索文字列を含むファイルパスのみをリストしたいと思います。特に、ディレクトリ内のすべてのファイルが検索文字列と一致するわけではありません。

以下は例の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

この目的に最適なツールは何ですか?locatefindfd-find

ベストアンサー1

flatpak他のパスコンポーネントではなくファイル名からのみ検索したいと思われるので、-b/--basenameオプションを使用できます。

だから:

locate -ib flatpak

-r別のアプローチは、/オプションを使用--regexして次のように書くことです。

locate -ir 'flapak[^/]*$'

ファイルパスの終わりを除いて、その後flatpakに必要な数の文字が続くことがあります。/

しかし、これは見逃す可能性がありますflatpak

おすすめ記事