ファイルまたはディレクトリ名に特定の単語が表示されるすべてのディレクトリを一覧表示するコマンドはありますか?

ファイルまたはディレクトリ名に特定の単語が表示されるすべてのディレクトリを一覧表示するコマンドはありますか?

私はファイルやフォルダがどこにあるのか覚えていないときにこのコマンドを使用します。locate(このコマンドはより多くの項目を見つけて、より多くの候補を受け入れるようです。
しかし、私が間違っている可能性があります。)find

しかし、当然、次のような反応がたくさん出てきました。

locate clang
/data/sauvegardes/dev/Java/Experimentations/Angular4/bikes/node_modules/blocking-proxy/.clang-format
/data/sauvegardes/dev/Java/Experimentations/Angular4/bikes/node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.xclangspec
/data/sauvegardes/dev/Java/Experimentations/Angular6/ng6-proj/node_modules/blocking-proxy/.clang-format
/data/sauvegardes/dev/Java/Experimentations/Angular6/ng6-proj/node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.xclangspec
/data/sauvegardes/dev/Java/Experimentations/blog-demo/node/node_modules/npm/node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.xclangspec
/data/sauvegardes/dev/Java/Experimentations/blog-demo/node_modules/blocking-proxy/.clang-format
/data/sauvegardes/dev/Java/Experimentations/blog-demo/node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.xclangspec
/data/sauvegardes/dev/Java/Experimentations/ol-ext-angular/.metadata/.plugins/ts.eclipse.ide.server.nodejs.embed.win32.win32.x86_64/node-v6.9.4-win-x64/node_modules/npm/node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.xclangspec

(201 responses)

このコマンドをパイプして、を使用して、名前にdirnameその単語を含むディレクトリのみを一覧表示するか、その単語を含む1つ以上のファイルを渡します。sortuniq

locate clang | xargs -L1 dirname | sort | uniq

効果があります...

/home/lebihan/dev/Java/comptes-france/metier-et-gestion/AdapterInboundWebEtude/etude/node_modules/node-gyp/gyp/tools/Xcode/Specifications
/home/lebihan/dev/Java/comptes-france/metier-et-gestion/AdapterInboundWebEtude/etude/node/node_modules/npm/node_modules/node-gyp/gyp/tools/Xcode/Specifications
/usr/include/boost/align/detail
/usr/include/boost/config/compiler
/usr/include/boost/predef/compiler
/usr/lib/linux-kbuild-6.1/scripts
/usr/lib/llvm-14/lib
/usr/lib/postgresql/14/lib/bitcode/postgres/commands
/usr/lib/x86_64-linux-gnu
/usr/local/go/misc/ios
/usr/local/go/src/debug/dwarf/testdata
/usr/local/go/src/debug/elf/testdata
/usr/local/go/src/debug/macho/testdata
/usr/share/doc
/usr/share/doc/libclang1-14
/usr/share/doc/libclang-cpp14

(108 responses)

しかし実際にLinux同じことをより簡単にできるコマンドがありますか?

ベストアンサー1

さて、GNUシステムを使用している場合は、GNUを使用して出力フォーマットを指定できfindます-printfsort特定のタスクに対して別々のコマンドを使用することは、KISSの概念をある程度満足させるので、それを維持することをお勧めします。しかし、sort存在するので-u省略するuniqことができます。

find . -name '*targetstring*' -printf '%h\n' | sort -u

ディレクトリ名の改行を処理するには、少しの労力が必要です。

find . -name '*targetstring*' -printf '%h\0' |
  LC_ALL=C sort -zu |
  tr '\0' '\n'

LC_ALL=Cまた、有効なテキストで構成されていない、またはユーザーのロケール内の同じ順序の文字を含むファイルパスの問題を回避します。)

デフォルト名だけでなく、パスのどこにでも検索するには、次のよう-nameに置き換えます。-pathtargetstring

-z-printfGNU拡張です。

おすすめ記事