GNU/Linux >> Linux の 問題 >  >> Linux

Linuxではfindをfdに置き換えます

多くのLinuxプログラマーはfindを使用します 彼らのキャリアの毎日を指揮します。しかし、find 限られたファイルシステムエントリのセットを提供し、大量のfindを実行する必要がある場合 操作、それは非常に速くさえありません。代わりに、Rust fdを使用することを好みます コマンドは、ほとんどのユースケースで機能する適切なデフォルトを提供するためです。

READMEにあるように、「fd ファイルシステム内のエントリを検索するプログラムです。これは、findに代わる、シンプルで高速、そしてユーザーフレンドリーな代替手段です。 。"並列化されたディレクトリトラバーサルを備えているため、一度に複数のディレクトリを検索できます。正規表現(regex)とglobベースのパターンをサポートしています。

fdをインストール

Linuxでは、fdをインストールできます ソフトウェアリポジトリから(利用可能なパッケージのリストは、Repologyのfdページにあります。)たとえば、Fedoraの場合:

$ sudo dnf install fd-find

macOSでは、MacPortsまたはHomebrewを使用します。

または、RustのCargoパッケージマネージャーを使用することもできます:

$ cargo install fd-find

fdを使用

簡単な検索を行うには、fdを実行します 次のような引数の後:

$ fd sh
registry/src/github.com-1ecc6299db9ec823/cc-1.0.67/src/bin/gcc-shim.rs
registry/src/github.com-1ecc6299db9ec823/exa-0.10.1/completions/completions.bash
registry/src/github.com-1ecc6299db9ec823/exa-0.10.1/completions/completions.fish
registry/src/github.com-1ecc6299db9ec823/exa-0.10.1/completions/completions.zsh
registry/src/github.com-1ecc6299db9ec823/exa-0.10.1/xtests/run.sh
registry/src/github.com-1ecc6299db9ec823/git2-0.13.18/src/stash.rs
registry/src/github.com-1ecc6299db9ec823/libc-0.2.94/src/unix/solarish
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/cmake/SelectHashes.cmake
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/include/git2/stash.h
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/include/git2/sys/hashsig.h
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/script/backport.sh
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/script/leaks.sh
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/script/valgrind.sh
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/src/config_snapshot.c
[...]

特定のディレクトリを検索する場合は、fdの2番目の引数としてディレクトリパスを指定します 、例:

$ fd passwd /etc
/etc/pam.d/passwd
/etc/passwd
/etc/passwd-
/etc/security/opasswd
>

特定のファイル拡張子を検索するには、-eを使用します オプションとして。例:

$ fd . '/home/ssur/exa' -e md
/home/ssur/exa/README.md
/home/ssur/exa/devtools/README.md
/home/ssur/exa/man/exa.1.md
/home/ssur/exa/man/exa_colors.5.md
/home/ssur/exa/xtests/README.md
$

-xを指定してコマンドを実行することもできます または-X

  • -x/--exec オプションは、検索結果ごとに外部コマンドを(並行して)実行します。
  • -X/--exec-batch オプションは、すべての検索結果を引数として外部コマンドを1回起動します。

たとえば、すべてのZIPアーカイブを再帰的に検索して解凍するには、次のようにします。

$ fd -e zip -x unzip

または、最後の n内で変更された特定のディレクトリの下のすべてのファイルを一覧表示します 日数は、--changed-withinを使用します オプション:

$ fd . '/home/ssur/Work/' --changed-within 10d
/home/ssur/Work/wildfly/connector/src/main/java/org/jboss/as/connector/subsystems/data_sources/JdbcDriverAdd.java
/home/ssur/Work/wildfly/connector/src/main/java/org/jboss/as/connector/subsystems/data_sources/JdbcExample.java
[...]

また、特定の日数より前に変更されたすべてのファイルを検索するには、--changed-beforeを使用します n オプション:

$ fd . '/home/ssur/Work/' --changed-before 365d

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

ここでは、. fdに指示するワイルドカードエントリとして機能します すべてのファイルを返します。

fdの機能の詳細については 、GitHubのドキュメントを参照してください。

結論

fdについて私が特に気に入っていることの1つ 検索パターンではデフォルトで大文字と小文字が区別されないため、探しているものについて不正確な知識がある場合でも、検索が容易になります。さらに良いことに、自動的に パターンに大文字が含まれている場合は、大文字と小文字が区別されます。

もう1つの利点は、色分けを使用してさまざまなファイルタイプを強調表示することです。

この素晴らしいRustツールをすでに使用している場合は、コメントでご意見をお聞かせください。


Linux
  1. スマートクォートをLinuxsedコマンドに置き換えます

  2. findコマンドを使用してLinux上のファイルとディレクトリを検索します

  3. LinuxでmanページをTealdeerに置き換えます

  1. N重複ファイルをハードリンクに置き換える簡単な方法は?

  2. Linuxで検索および検索コマンドを使用してファイルを検索する

  3. Linuxでfdコマンドを使用してファイルを検索する方法

  1. Linuxで.rbで終わるすべてのファイルを見つける方法は?

  2. Linuxはサイズ0のファイルを削除します

  3. ディレクトリとサブディレクトリで検索して sed に置き換えます