ファイルシステム全体で名前付きファイルを検索するには、bash
次のコマンドを実行できます。
% find / -name "bash" 2> /dev/null
私のシステムで作成されました
/bin/bash
/etc/apparmor.d/abstractions/bash
/usr/share/doc/bash
/usr/share/lintian/overrides/bash
/usr/share/menu/bash
/rofs/bin/bash
/rofs/etc/apparmor.d/abstractions/bash
/rofs/usr/share/doc/bash
/rofs/usr/share/lintian/overrides/bash
/rofs/usr/share/menu/bash
大丈夫です。ただし、システムにはこのファイルが必要な特定のディレクトリがあることがわかります。いいえ、検索をより効率的にするために、コマンドを次のように更新しました。
% find / \
-name "proc" -prune -o \
-name "sys" -prune -o \
-name "run" -prune -o \
-name "bash" \
2> /dev/null
これで、無関係なファイルでいっぱいの画面が表示されます。なぜこれを行うのですかfind
?
バージョンを探す
% find --version
find (GNU findutils) 4.7.0-git
答え1
最終操作を指定していないので、find
完了したように処理してください。
find / \( -name .. -prune -o -name .... -o -name bash \) -print
"-prune" は true を返すので、これらのディレクトリを印刷します。これは、と呼ばれるすべてのディレクトリsys
、と呼ばれるすべてのディレクトリproc
などを意味します。カーネルのソースコードがあれば、明らかに多くのディレクトリがあるでしょう!
例えば
/sys
/var/run
/proc
/usr/src/linux-headers-3.16.0-4-amd64/include/config/sys
/usr/src/linux-headers-3.16.0-4-amd64/include/config/keys/debug/proc
/usr/src/linux-headers-3.16.0-4-amd64/include/config/nf/conntrack/proc
/usr/src/linux-headers-3.16.0-4-amd64/include/config/proc
sys
これらはすべてorrun
またはorと呼ばれますproc
。
-print
簡単な答えは
% find / -name "proc" -prune -o \
-name "sys" -prune -o \
-name "run" -prune -o \
-name "bash" -print \
2> /dev/null
これでアイテムだけがfind
印刷されます。bash
例えば
/usr/share/doc/bash
/usr/share/lintian/overrides/bash
/usr/share/menu/bash
/bin/bash