次のファイルを見つけようとします。第1巻。
私のテストでは上記のファイルを見つけようとしていますが、このテストではファイルがどこにあるのかわかりません。
試してみましたが、find / -iname book1
出力はありません。
ファイルがどこにあるかわからない場合は、コマンドラインを使用してbook1という名前のファイルを見つけることができますか?
編集する:
私のシナリオは以下でより詳細に説明されています。
- ファイル拡張子が不明
- 正確な名前(大文字、数字など)は不明です。
- ファイルの場所が不明
答え1
まず、パラメータ-iname
はシェルです。模様。パターンの詳細をご覧ください。バッシュマニュアル。ポイントはfind
本当に探すファイルのファイル名は、指定されたパターンと一致する必要があります。大文字と小文字を区別しない文字列一致をbook1
有効にするには、次の項目をBook1.gnumeric
追加する必要があります。*
find / -iname 'book1*'
またはフルネームを指定してください。
find / -iname 'Book1.gnumeric'
第二に、ファイル名の大文字と小文字は無視される-iname
ため、指定すると検索することもできます。探しているファイルが呼び出されたと確信している場合は、使用しないで使用すると高速化されます。find
-iname book1
Book1
bOok1
Book1.gnumeric
-iname
-name
find / -name 'Book1.gnumeric'
第三に、引用文に記載されているパターンを覚えておいてください。その他の回答。
最後に、このファイルを探しますか?
どこでもあなたのシステムに?$HOME
ファイルを処理したり、どこかからダウンロードした場合は、探しているファイルが実際にディレクトリにある可能性があります。今回もはるかに高速です。
編集する:
質問を修正したことが確認されました。完全なファイル名、大文字と小文字、場所が本当にわからない場合は、次のように使用する必要があります。
find / -iname 'book1*'
2>/dev/null
また、root以外のユーザー*permission denied*
として呼び出すときに発生するすべてのエラーやその他のエラーを非表示にするには、この項目を行の末尾に配置することをお勧めします。find
find / -iname 'book1*' 2>/dev/null
単一のファイルを検索したい場合、システムにfind
基準に一致するファイルが 1 つしかない場合は、一致する最初のファイルを見つけて終了できます。
find / -iname 'book1*' -print -quit 2>/dev/null
答え2
locate
コマンドを試してみてください。検索を高速化するために、ファイル名データベースを使用します。
一致するすべてのファイルを検索し*book1*
て大文字と小文字を無視するには、次のようにします。
locate -i book1
ファイルを検索したい場合スタートbook1
ワイルドカードは直接作成する必要があります。
locate -i 'book1*'
よりはるかfind
に高速ですが、データベースを最後に更新した時点と同じくらい最新です。
答え3
book1.something
ファイルの場所、の正確な値、something
ファイル名の大文字と小文字のパターンが不明な名前のファイルがあることがわかっている場合:
find / -iname 'book1.*'
ファイル名に単語が含まれていることがわかっている場合は、book
次のコマンドを使用して潜在的に大きなリストを作成できます。
find / -iname '*book*'
引数は-name
シェルグローブパターンです。ファイルがあるディレクトリーで、以下を比較します。
$ ls Book1
ls: cannot access 'Book1': No such file or directory
$ ls Book1.*
Book1.gnumeric
これは実行された検索の種類を表します-name
。この-iname
オプションは大文字と小文字を区別しないバージョンのみを許可します。
答え4
Zshではglobモードを使用できるので、次のように動作します。
ls -a /**/book1
名前付きファイルがあるすべての場所を見つけますbook1
。
私のテストでは、この方法はを使用するよりも速いようfind
で、結果もほとんどありませんでした。ユーザー権限エラーroot権限なしで実行する場合
バラより手動。