Linuxでfdコマンドを使用する方法
公開: 2022-01-29 Linuxでは、 fd
はfind
コマンドのより簡単な代替手段です。 構文が単純化され、適切なデフォルトが使用され、常識的な動作が組み込まれています。 そのペースを見てみましょう。
fdとfind:違いは何ですか?
fd
コマンドは、Linux上で永遠に使用されてきた従来のfind
コマンドを置き換えることを意図したものではありません。 代わりに、 fd
は、 find
の一般的な使用法の大部分をより簡単な方法で満たそうとします。また、多くの場合、 find
よりも8倍または9倍高速です。 プロジェクトのGitHubリポジトリページでベンチマークの一部を確認できます。
fd
には、一部のls
モードと同様の色付きの出力があります。 再帰的ですが、デフォルトでは隠しディレクトリを検索しません。 Gitを認識しており、「。gitignore」ファイルのパターンも自動的に無視します。
fd
は、デフォルトでは大文字と小文字を区別しません。 ただし、検索パターンに大文字が含まれている場合、 fd
は大文字と小文字を区別するモードで動作します。 もちろん、デフォルトをオーバーライドすることもできますが、多くの場合、デフォルトが有利に機能します。
関連:すべてのLinuxの検索コマンドの使用方法
fdのインストール
Ubuntu 19.04(Disco Dingo)以降、 apt-get
を使用して公式に保守されているパッケージを呼び出すことにより、 fd
を直接インストールできます。 古いバージョンのUbuntuを実行している場合は、Gitハブページのインストール手順を確認してください。
次のように入力します。
sudo apt-get installfd-find
Ubuntuでは、コマンドはfdfind
であり、別の既存のユーティリティとの名前の衝突を回避します。 fd
にしたい場合は、エイリアスを設定できます。
エイリアスfd = fdfind
エイリアスを永続化して、再起動後も使用できるようにするには、エイリアスを「.bashrc」または「.bash_aliases」ファイルに配置します。
関連: Linuxでエイリアスとシェル関数を作成する方法
Fedoraにfd
をインストールするには、次のコマンドを入力します。
sudo dfn installfd-find
Manjaroで、次のように入力します。
sudo pacman -Syu fd
fdとfdfind
混乱を避けるために、UbuntuテストPCではコマンドをデフォルト名fdfind
のままにしました。 次の例に示すように、 fd
とfdfind
はまったく同じコマンドです( fdfind
にバージョンを表示するように要求すると、それ自体が「fd」と呼ばれます)。
fdfind --version
コマンドを「fed」と呼びますが、例では、Ubuntuの「fdfind」を使用します。 他のLinuxディストリビューションでは、「fdfind」の代わりに「fd」と入力して、いくつかのキーストロークを節約できます。
fdを使用した単純な検索
コマンドラインオプションなしでfd
を使用する場合、デフォルトでサブディレクトリ内のファイルを一覧表示することを除いて、 ls
と少し似た動作をします。
次のように入力します。
fdfind
出力は、ファイルタイプとディレクトリごとに異なる色で表示されます。
特定のタイプのファイルを表示するには、
(拡張子)オプションを使用します。 拡張子の前にピリオド(。)を付ける必要はなく、大文字と小文字も区別されないことに注意してください。-e
たとえば、次のように入力できます。
fdfind -e png
現在、リストされているファイルはPNG画像ファイルのみです。
単一のファイルを検索するには、次のようにコマンドラインでその名前を入力します。
fdfind index.page
ファイルが見つかり、たまたまサブディレクトリにあります。 再帰的に検索するようにfd
に指示する必要はありませんでした。
特定のディレクトリで検索を開始するには、コマンドラインにファイルパスを含めます。 次のコマンドは、「/ etc」ディレクトリで検索を開始し、ファイル名に「passwd」を含むファイルを検索します。
fdfind passwd / etc
ここでは、ファイル名に「coord」が含まれているすべてのCソースコードファイルを検索しています。
fdfind -ec coord
一致するファイルが2つ見つかりました。
fdとGit
Gitは、非常に人気のあるソースコードバージョン管理システムです。 コンピューターでGitを使用する場合は、おそらく「.gitignore」ファイルを使用して、Gitがどのファイルに関係し、どのファイルを無視できるかをGitに通知します。 デフォルトでは、 fd
は「.gitignore」ファイルの設定を尊重します。
このディレクトリには、Gitリポジトリと「.gitignore」ファイルがあります。 次のように入力します。
ls -adl .git *
ファイル名に「coord」を含むファイルをリストするようにfd
に依頼しましょう。 次に、検索を繰り返し、 -I
(無視しない)オプションを使用します。 これは、「。gitignore」ファイルの設定を無視し、一致するすべてのファイルを報告するようにfd
に指示します。
これをすべて行うには、次のように入力します。
fdfind coord
fdfind coord -I
結果の2番目のセットにある2つの追加ファイルは、オブジェクトファイルです。 これらは、ファイルプログラムのコンパイル時に作成されます。 次に、これらはリンカーによって使用され、プログラムの最終的な実行可能バージョンが作成されます。
オブジェクトファイルは通常、ソースコードバージョン管理プログラムによって無視されます。 プログラムをコンパイルするたびに再生成されるため、コピーを保存する必要はありません。 「.gitignore」ファイルには、Gitにオブジェクトファイルを無視するように指示するエントリがあり、デフォルトでは、 fd
もそれらを無視します。
-I
(無視しない)オプションは、「。gitginore」ファイルによってガイドされるのではなく、 fd
が検出したすべてのものを返すように強制します。
ファイルの種類と大文字と小文字の区別
fd
に、ディレクトリ、ファイル(実行可能で空のファイルを含む)、およびシンボリックリンクを探すように依頼できます。 これを行うには、 -t
(type)オプションを使用し、その後に以下の文字のいずれかを続けます。
- f :ファイル。
- d :ディレクトリ。
- l :シンボリックリンク。
- x :実行可能ファイル。
- e :空のファイル。
以下は、imagesというディレクトリを探します。
fdfind-td画像
現在のサブディレクトリより1つ下のサブディレクトリに一致するものが見つかりました。
大文字と小文字の区別が検索パターンでどのように機能するかを見てみましょう。 次のように入力して、最初にファイル名に「geo」が含まれているファイルを検索し、次にファイル名に「Geo」が含まれているファイルを検索します。
fdfind -tf geo
fdfind -tf Geo
最初のコマンドでは、小文字の検索パターンを使用しました。これにより、 fd
は大文字と小文字を区別せずに動作しました。 これは、「Geo」と「geo」の両方が有効な一致であることを意味します。
2番目のコマンドには大文字が含まれているため、 fd
では大文字と小文字が区別されます。 これは、「Geo」のみが有効な一致であることを意味します。
コマンド実行
fd
コマンドを使用すると、別のコマンドを起動して、見つかった各ファイルに対して実行できます。
ソースコードディレクトリツリーのどこかにZipファイルがあることがわかっているとしましょう。 次のコマンドを使用して検索できます。このコマンドは、ZIP拡張子の付いたファイルを検索します。
fdfinf -e zip
-x
(exec)オプションを使用すると、見つかった各ファイルを別のコマンドに渡して処理することができます。 たとえば、次のように入力して、解凍ユーティリティを呼び出してZIPファイルを解凍できます(「{}」は、見つかったファイルを表すプレースホルダーです)。
fdfind -e zip -x unzip {}
これにより、現在の作業ディレクトリにあるファイルが解凍されます。 ZIPファイルを含むディレクトリで解凍する場合は、次のプレースホルダーのいずれかを使用できます。
- {} :見つかったファイルの完全なファイルパスと名前。
- {/} :見つかったファイルのファイル名。
- {//} :見つかったファイルを含むディレクトリ。
- {/。} :見つかったファイルのファイル名(拡張子なし)。
ZIPファイルを見つけて、それを含むディレクトリで解凍するには、unzip -d
(ディレクトリ)オプションを使用して、親ディレクトリのプレースホルダー( {//}
)を渡すことができます。
fdfind -e zip -x unzip {} -d {//}
次に、ZIPファイルが検索され、その親ディレクトリで解凍されます。
あなたの頼りになる発見?
fd
は、このような単純さで最も一般的な使用法をカバーしているため、簡単に「検索」コマンドになります。 より高度な機能が必要なときはいつでも、そのベテランのベテランに戻ってfind
ができます。
Linuxコマンド | ||
ファイル | tar・pv・cat・tac・chmod・grep・diff・sed・ar・man・pushd・popd・fsck・testdisk・seq・fd・pandoc・cd・$ PATH・awk・join・jq・fold・uniq・journalctl・tail・stat・ls・fstab・echo・less・chgrp・chown・rev・look・strings・type・rename・zip・unzip・mount・umount・install・fdisk・mkfs・rm・rmdir・rsync・df・gpg・vi・nano・mkdir・du・ln・patch・convert・rclone・shred・srm | |
プロセス | エイリアス・screen・top・nice・renice・progress・strace・systemd・tmux・chsh・history・at・batch・free・which・dmesg・chfn・usermod・ps・chroot・xargs・tty・pinky・lsof・vmstat・タイムアウト・wall・yes・kill・sleep・sudo・su・time・groupadd・usermod・groups・lshw・shutdown・reboot・halt・poweroff・passwd・lscpu・crontab・date・bg・fg | |
ネットワーキング | netstat・ping・traceroute・ip・ss・whois・fail2ban・bmon・dig・finger・nmap・ftp・curl・wget・who・whoami・w・iptables・ssh-keygen・ufw |
関連:開発者と愛好家のための最高のLinuxラップトップ