\r\n\r\n
Linuxでは、fdはfindコマンドに代わるより簡単なコマンドです。簡素化された構文で、賢明なデフォルトを使用し、常識的な動作を内蔵しています。その手順を紹介しよう。
fdコマンドは、Linuxで古くからある伝統的なfindコマンドを置き換えるためのものではありません。その代わり、fdはfindの一般的な使い方をよりわかりやすく満たそうとし、findの8〜9倍の速さで動作します。プロジェクトのGitHubリポジトリページで、そのベンチマークをいくつか見ることができます。
fd は、いくつかの ls モードと同様に、色つきの出力です。再帰的ですが、デフォルトでは隠しディレクトリの検索は行いません。Gitを熟知しており、「.gitignore」ファイル内のパターンも自動的に無視します。
fd はデフォルトで大文字と小文字を区別しない。ただし、検索パターンに大文字が含まれている場合、fdは大文字と小文字を区別して動作します。もちろん、デフォルトを上書きすることも可能ですが、多くの場合、デフォルトが有利に働きます。
関連:Linuxの全検索コマンドの使い方
ubuntu 19.04 (Disco Dingo) 以降は、apt get で公式にメンテナンスされているパッケージを呼び出して、直接 fd をインストールできます。 古いバージョンの Ubuntu をお使いの場合は、Git hub ページでインストール方法を確認してください。
と入力する。
sudo apt-get install fd-findUbuntuでは、fdfindというコマンドで、他の既存ユーティリティとの名前の衝突を回避しています。fdにしたい場合は、エイリアスを設定します。
alias fd=fdfindエイリアスを永続化し、再起動後も利用できるようにするには、「.bashrc」または「.bashu aliases」ファイルに記述してください。
関連:Linuxでエイリアスやシェル関数を作成する方法
Fedoraにfdをインストールするには、次のコマンドを入力します。
sudo dfn install fd-findManjaroの場合、次のように入力します。
sudo pacman -Syu fd混乱を避けるため、UbuntuのテストPCでは、fdfindというデフォルトの名前のコマンドにしています。fdとfdfindは、次の例でわかるように、同一のコマンドです(fdfindにバージョンを表示するように頼むと、「fd」と名乗ります)。
fdfind --versionこのコマンドを「fed」と呼ぶことにしますが、例ではUbuntuの「fdfind」を使用します。他のLinuxディストリビューションでは、"fdfind "の代わりに "fd "と入力すると、キーストロークを節約することができます。
コマンドラインオプションなしでfdを使用すると、デフォルトでサブディレクトリのファイルをリストアップすることを除いて、lsと少し似た動作をします。
と入力する。
fdfind出力は、ファイルの種類やディレクトリごとに異なる色で表示されます。
特定の種類のファイルを表示するには、-e(拡張子)オプションを使用します。拡張子の前にピリオド(.)を付ける必要はなく、大文字と小文字は区別されませんのでご注意ください。
例えば、次のように入力することができます。
fdfind -e png表示されるファイルは、PNG画像ファイルのみとなりました。
個々のファイルを探すには、次のようにコマンドラインにファイル名を入力します。
fdfind index.pageファイルが見つかり、それがたまたまサブディレクトリの中にあった場合、fdに再帰的に検索するように指示する必要はない。
特定のディレクトリの検索を開始するには、コマンドラインにファイルパスを含めてください。次のコマンドは、「/etc」ディレクトリの検索を開始し、ファイル名に「passwd」が含まれるファイルを探します。
fdfind passwd /etcここでは、ファイル名に "coord "を含むすべてのC言語ソースファイルを検索しています。
fdfind -e c coord一致するファイルが2つ見つかりました。
Gitは、非常に有名なソースコードのバージョン管理システムです。コンピュータでGitを使っている場合、".gitignore "ファイルを使って、Gitに気にかけるべきファイルと無視してもよいファイルを指示することができます。デフォルトでは、fdは".gitignore "ファイル内の設定を尊重します。
このディレクトリにGitリポジトリと「.gitignore」ファイルがあるので、次のように入力します。
ls -adl .git*fdにファイル名に "coord "が含まれるファイルをすべてリストアップさせることにしよう。次に、検索を繰り返し、-I(無視しない)オプションを使用します。これは、".gitignore" ファイルの設定を無視して、マッチするすべてのファイルを報告するように fd に指示します。
これらのアクションをすべて実行するには、次のように入力します。
fdfind coord fdfind coord -I2つ目の結果で余った2つのファイルはオブジェクトファイルです。ファイルプログラムのコンパイル時に作成されます。そして、リンカーが最終的な実行形式を作成するために使用する。
ターゲットファイルは、通常、ソースコードのバージョン管理プログラムでは無視されます。プログラムをコンパイルするたびに再生成されるので、コピーを保存しておく必要はない。.gitignore "ファイルには、Gitにオブジェクトファイルを無視するように指示する項目があり、デフォルトではfdも同様に無視します。
I(無視しない)オプションは、".gitginore "ファイルによって指示されるのではなく、fdが見つけたものすべてを返すように強制します。
ディレクトリ、ファイル(実行ファイルと空ファイルの両方)、シンボリックリンクの検索をfdに依頼することができます。このためには、-t(タイプ)オプションの後に、次のいずれかの文字を続けます。
imagesという名前の以下のディレクトリを探します。
fdfind -td images現在のサブディレクトリより1つ下位のサブディレクトリで、一致するものを検索します。
検索モードで大文字小文字を区別する方法を見てみましょう。次のようなコマンドを入力して、まずファイル名に「geo」が含まれるファイルを検索し、次に「geo」が含まれるファイルを検索します。
fdfind -tf geo fdfind -tf Geo最初のコマンドでは,小文字検索モードを使用し,fdを大文字と小文字の区別なく動作させる。つまり、"Geo "と "Geo "の両方が有効な一致となります。
2番目のコマンドは大文字を含んでおり、fdは大文字と小文字を区別して動作するようになっています。つまり、"Geo "のみが有効なマッチングとなる。
fdコマンドは、別のコマンドを起動し、ファイルが見つかるたびにそのコマンドを実行することができます。
ソースディレクトリのツリーのどこかにZipファイルがあることが分かっているとします。以下のコマンドで、拡張子がZIPのファイルを検索して見つけることができます。
fdfinf -e zipx (exec)オプションを使用すると、見つかった各ファイルを別のコマンドに渡して処理させることができます。たとえば、次のように入力すると、unzip ユーティリティが起動し、ZIP ファイルが解凍されます(「{}」は見つかったファイルを示すプレースホルダ)。
fdfind -e zip -x unzip {}ZIPファイルを含むディレクトリで解凍する場合は、以下のプレースホルダを使用します。
ZIPファイルを含むディレクトリのファイルを探して解凍するには、unzip-d (directory) オプションを使用し、親ディレクトリのプレースホルダ ({//}) を渡します。
fdfind -e zip -x unzip {} -d {//}その後、ZIPファイルを探し、その親ディレクトリで解凍します。
最も一般的な使い方をシンプルに網羅しているので、fdは「探す」ためのコマンドとして簡単に利用することができます。より高度な機能が必要なときは、いつでもそのベテランに立ち返って探すことができるのです。