DUICUO

ついに find コマンドを覚える必要がなくなったオープンソースのファイル検索ツール。

今日は、便利でオープンソースのファイル検索ツールをお勧めしたいと思います。

fdはほとんどの主要オペレーティングシステムをサポートしています。今すぐツールボックスをアップデートして、オープンソースプロジェクトがもたらす利便性を体験してください!

I. fdの紹介

まだファイルを探すのに苦労していませんか?また、ファイルを思い出すのに苦労していませんか?  探す たくさんのパラメータにうんざりしていませんか?それなら、今回お勧めするプロジェクト ファイル記述子をすぐにチェックしてみてください。

プロジェクトアドレス: https://github.com/sharkdp/fd

公式の説明: 「検索」に代わるシンプルで高速、そしてユーザーフレンドリーな代替手段

まずは、視覚的に感じていただけるように写真をお見せします。

`fd` は、ファイル検索に便利な様々なオプションを提供するコマンドラインツールで、デフォルトで結果をカラー表示します。プロジェクト自体は、C++に匹敵する速度を誇るシステムレベルプログラミング言語である Rust で記述されているため、`fd` の速度は当然ながら優れています。さらに、様々な条件に基づいて検索できる強力な機能も備えています。

この素晴らしいプロジェクトはあなたの注目を集めることができましたか?

II. fdのインストール方法

もちろん、これを使用するための最初のステップはインストールすることです。

fd はさまざまなオペレーティング システム プラットフォームにインストール方法を提供しており、最後の手段として、ソース コードから直接インストールすることもできます (Rust 環境がある場合)。

2.1 ワンクリックインストール

ここではローカルの Mac を使用しています。  醸造する 例えば

 $ brew インストールfd

醸造する ワンクリックアップグレードも可能です。

 $ ブリューアップグレードfd

各プラットフォームの詳細なインストール手順については、ここにあるインストールドキュメントを参照してください。

2.2 ソースコードのインストール

 $ git クローン https://github.com/sharkdp/fd.git
$ cd fd
$ cargo をインストール --path 。

2.3 ヘルプを表示する

どちらの方法を使用しても、インストールが完了すると、すぐに使用できるようになります。   -h  または  - ヘルプ 助けてもらいました。   - ヘルプ デモンストレーションはしませんが、違いは、詳細なヘルプ手順が含まれるようになったため、将来パラメータを忘れた場合でも、それを使用できるようになります。   - ヘルプ ぜひ見に来てください!

 $ fd - h
fd 8.2.1

使用法
fd [ フラグ/ オプション] [ < パターン> ] [ < パス> ... ]


-H--hidden は隠しファイルとディレクトリを検索します
-I , --no - ignore . ( git | fd ) ファイルの一致無視する
--no - ignore - vcs は.gitignore ファイル内の一致を無視しません
-s--case - sensitive大文字小文字を区別する検索です (デフォルト: Smart Case)
-i , --ignore - case 大文字と小文字を区別しない検索 (デフォルト: Smart Case)
-F--fixed- strings はパターンをリテラル文字列として扱います
-a-- absolute -path は相対パスではなく絶対パスを表示します
-L , --follow ( シンボリックリンクをたどる)
-p--full -path完全なパスを検索します(デフォルト: ファイルのみ- /dirname)
- 0 , -- print0 はヌル文字を使用して結果を区切ります。
-h , --help ヘルプ情報を表示します
-V--version はバージョン情報を出力します

オプション:
-d , --max - depth <depth> 最大検索深度設定します(デフォルト: なし)
-t , --type <filetype> ... タイプでフィルタリング: ファイル (f)、ディレクトリ (d)、シンボリックリンク ( l )
実行可能ファイル(x)、空(e)
-e , --extension <ext> ... ファイル拡張子フィルタリング
-x , --exec <cmd> 検索結果ごとにコマンドを実行します
- E , -- exclude <パターン> ... 指定されたglobパターンに一致するエントリを除外します
--ignore - file <path> ... .gitignore 形式カスタム無視ファイルを追加します
-c , --color <when> を使用するタイミング: never、 * auto * always
-j--threads <num> は、検索と実行に使用されるスレッドを設定します
- S , -- size < size > ... ファイル サイズの制限に基づく結果。
...

III. fdのクイックスタートデモンストレーション

今後のデモで一貫性を保つため、`fd` のテストディレクトリとして新しいディレクトリを作成しました。実際の状況をシミュレートするために、隠しディレクトリを含む架空のファイルとディレクトリをいくつか作成しました。以降のデモはすべてこのルートディレクトリをベースとします。オプションに短縮名とロング名が含まれている場合、例では短縮名を使用します。

ディレクトリはおおよそ次のようになります。


├── . hg
├── HelloDjango . md
├── HelloRust . md
├── HelloVue . md
├── HelloZooKeeper . md
├── dir1
├── Hello.java
├── 世界.java
└── dir2
├── デモ.py
├── デモ1 .py
├── dir3
├── fd_demo .rs
└── fd_help .rs
└── sss . py
├── hello_fd . md
├── hello_java.md
├── ジャワ
├── Hello.java
└── 世界.java
├── my_java.txt
├── パイソン
├── デモ.py
├── デモ1 .py
└── sss . py
└──
├── fd_demo . rs
└── fd_help . rs
├── softdir3 - > dir1 / dir2 / dir3
└── sss .py - > dir1 / dir2 / sss .py

3.1 シンプル検索

fd  検索するコンテンツを指定すると、現在のディレクトリ内のすべてのファイルを再帰的に検索し、ファイル名に対象のコンテンツが含まれる結果を一覧表示します (結果は現在のディレクトリを基準とします)。

 $ fd こんにちは
dir1 / Hello.java
ジャワ/ Hello.java

3.2 隠しディレクトリを含む

オプション  -H  または  - 隠れた

 $ fd - H こんにちは
.hg / HelloDjango.md
.hg / HelloRust.md
.hg / HelloVue.md
.hg / HelloZooKeeper .md
dir1 / Hello.java
ジャワ/ Hello.java

3.3 大文字の使用

デフォルト  fd  大文字と小文字を区別して一致します。検索クエリに大文字が含まれている場合は、大文字と小文字を区別して完全に一致しますが、小文字が含まれている場合は大文字と小文字の区別を無視します。   fd  大文字と小文字を厳密に一致させるために、 2 つの追加オプションが提供されています。

オプション  -私 または  --大文字と小文字を区別しない 大文字と小文字を無視します。

 $ fd -i こんにちは
dir1 / Hello.java
hello_fd . md
hello_java.md
ジャワ/ Hello.java

オプション  -s  または  - 大文字と小文字を区別 厳密な大文字と小文字の一致。

 $ fd -s こんにちは
hello_fd . md
hello_java.md

3.4 絶対パスを返す

オプション  -あ または  --絶対パス  :

 $ fd - こんにちは
/Users/junjiexun/fd_test/dir1/Hello.java
/Users/junjiexun/fd_test/java/Hello.java

3.5 ファイルリストの詳細に戻る

オプション  -l  または  --list-details  類似のものを取得  ls -l  効果。

 $ fd -l こんにちは
-rw - r --r --1 junjiexun スタッフ0 B 3 1 18:42 dir1 / こんにちは ジャワ
- rw - r -- r -- 1 junjiexun スタッフ0 B 3 1 18 : 37 hello_fd . md
-rw -r --r --1 junjiexun スタッフ0 B 3 1 18:37 hello_java MD
-rw -r --r --1 junjiexun スタッフ0 B 3 1 18:38 java / こんにちは ジャワ

3.6 検索結果にパスが含まれる

オプション  -p  または  --フルパス ファイル名を検索するだけでなく、対象のコンテンツを含むディレクトリ内の結果も一覧表示します。

このテストのディレクトリは  /ユーザー/ジュンジエクスン したがって、この検索方法ではすべてのファイルが取得されます。

 $ fd xun
何も返されませんでした...
$ fd - p xun
ディレクトリ1
dir1 / Hello.java
dir1 / World.java
ディレクトリ1 / ディレクトリ2
... (省略)

3.7 .gitignore にファイルを含める

オプション  -私 または  --無視しない ここに新しいものを作成しました。   .gitignore  ファイルには 1 つの項目のみが含まれています。   *.java  デモ目的で使用され、現在のディレクトリを次のように変更する必要があります...   git 初期化  Git プロジェクトとして初期化します。

このパラメータがない場合でも、結果セットを表示できます。   .java  すべてのファイルがフィルタリングされました。

 $ fd java
hello_java.md
ジャワ
my_java.txt

追加した  -私 その結果には、   .java  ファイルはこれで終わりです。

 $ fd - I java
dir1 / Hello.java
dir1 / World.java
hello_java.md
ジャワ
ジャワ/ Hello.java
java / ワールド. java
my_java.txt

-私 機能のデモは終了しました。次回のデモに向けて…   .gitignore  そして  .git  ディレクトリは削除されました。

これらのシンプルな機能だけでも、日常的な検索ニーズの半分は満たせます。次に見ていきましょう。   fd  より高度な検索オプションを提供します。

IV. 詳細検索オプション

4.1 深さ別

オプション  -d  または  --max-depth <深さ>  現在のパスの深さは 1 です。  ディレクトリ3  次の  rs  ファイルの深さは 4 です。

 $ fd rs
dir1 / dir2 / dir3 / fd_demo.rs
dir1 / dir2 / dir3 / fd_help.rs
/ fd_demo.rs
/ fd_help.rs
 $ fd - d 3 rs
/ fd_demo.rs
/ fd_help.rs

4.2 ファイルの種類別

オプション  -t  または  --type <ファイルタイプ>    fd  以下のタイプが提供されています ファイルタイプ オプション:

  • f:ファイル
  • d: ディレクトリ
  • l:シンボリックリンク
  • x: 実行可能
  • e: 空
  • s: ソケット
  • p:パイプ
 $ fd - t l
ソフトディレクトリ3
sss.py
 $ fd - t d
ディレクトリ1
ディレクトリ1 / ディレクトリ2
ディレクトリ1 / ディレクトリ2 / ディレクトリ3
ジャワ
パイソン
さび

すべての .py ファイルに実行権限を追加しました。

 $ fd - t x
Python / デモ.py
Python / デモ1.py
python / sss.py

4.3 ファイル拡張子による

オプション  -e  または  --extension <拡張子>

 $ fd -e md
hello_fd . md
hello_java.md

4.4 除外

オプション  -E  または  --exclude <パターン>  文字を含むすべての文字を除外するワイルドカードをサポートします。   s  結果。

 $ fd - E '*s*'
ディレクトリ1
dir1 / Hello.java
dir1 / World.java
ディレクトリ1 / ディレクトリ2
dir1 / dir2 / demo.py
dir1 / dir2 / demo1.py
ディレクトリ1 / ディレクトリ2 / ディレクトリ3
hello_fd . md
hello_java.md
ジャワ
ジャワ/ Hello.java
java / ワールド. java
my_java.txt
パイソン
Python / デモ.py
Python / デモ1.py

ご覧のとおり、rust、rs、sss、soft のキーワードは結果セットに表示されません。

4.5 所有者による

オプション  -o  または  --owner <ユーザー:グループ>

 $ fd -l -o ジュンジエクスン
drwxr - xr - x 5 junjiexun スタッフ160 B 3 1 18 : 42 dir1
-rw - r --r --1 junjiexun スタッフ0 B 3 1 18:42 dir1 / こんにちは ジャワ
-rw - r --r --1 junjiexun スタッフ0 B 3 1 18:42 dir1 / World ジャワ
drwxr - xr - x 6 ジュンジエクスンスタッフ192 B 3 1 18 : 42 dir1 / dir2
- rw - r -- r -- 1 junjiexun スタッフ0 B 3 1 18 : 42 dir1 / dir2 / デモ.py
...省略

または  fd -l -o junjiexun:スタッフ 同じ効果が得られますが、   fd  個々のグループ検索やワイルドカードはサポートされていません。ご提案がございましたら、問題としてご報告ください。

4.6 複合コマンド

fd  提供された  -x  または  --exec <コマンド>    -X  または  --exec-batch <コマンド>  検索結果セットをさらに処理します。

「java」に一致するすべてのコンテンツを検索して削除します。(これはデモンストレーション目的のみです。)   rm -rf   (注意して使用してください)

 $ fd java -X rm -rf

すべての .py ファイルを見つけて、vim で開きます。

 $ fd py - X vim

次のようなものも使用できます 解凍   ls   変換する その他のよく使用されるコマンドも、*unix 構文を使用して直接実行できます。   |  パイプ演算子の構文がさらに処理されます。

4.7 正規表現

ファイル内のコンテンツ検索に関しては、前回のデモでは「Hello」「java」「py」といった完全なテキストエントリを示しました。実際には…   fd  コンテンツの検索では正規表現がデフォルトでサポートされていますが、一重引用符で囲む必要があります。   '  最後に、以下で実演します。「s」で始まるすべてのファイルが検索可能になります。

 $ fd '^s.*'
dir1 / dir2 / sss.py
python / sss.py
ソフトディレクトリ3
sss.py

正規表現を使用せず、より単純なワイルドカード マッチングに切り替えたい場合は、オプションを使用できます。   -g  または  --glob  同じ効果が得られます。

 $ fd -g ' s *'
dir1 / dir2 / sss.py
python / sss.py
ソフトディレクトリ3
sss.py

上記のオプションのほとんどは同時に使用できますが、スペースの制限により、ここではこれ以上の説明は省略します。

V. 要約

fd  シンプルで使いやすいコマンドラインファイル検索ツールです。オープンソースなので、Rustのソースコードを学習するのに最適なツールです。今すぐ学習を始めましょう!

この記事のソースコード: https://github.com/HelloGitHub-Team/Article