通常のファイルとディレクトリの両方を見つける


9

ディレクトリとファイルタイプの両方のファイルを見つけるために、findをどのように(私がわかる場合は!)見つけることができますか?

find -type fd

これは、ここでのヒューリスティックな暗黒時代のようなものです。

回答:


12

使用できるコマンドは次のとおりです。

find -type f -or -type d

7
またはfind -type f -o -type d、POSIX準拠の代替の場合。
manatwork

$ findを実行すると、ちょっと問題が発生しました。-type d-または-type f -and -iname "ビジョン"期待どおりに動作せず、他に何か不足していますか?
MageProspero

2
-aは-oよりも優先されます。括弧を使用してください(ただし、シェルではエスケープします)。非標準の-orまたは-andを使用する必要はありません。
ステファンChazelas

`findをしようとすると。-type dまたは-type f -name 'abc' . I get an error.. find:パスはexpression: `の前になければなりません。理由は何ですか?
alpha_989 2018

1
@ alpha_989が-前にありorませんか?
Mateusz Piotrowski

2

tl:dr

使用する find . -name "*string*" -type f -o -name "*string*" -type d

説明

-oコマンドorは、ファイルパスの後の引数を完全にfind . -name "*string*" -type f -o -type d計算しfind . (-name "*string*" -type f) -o (-type d)ます。このため、指定する必要があります

ほとんどのユーザーは次のようなものを望みます

find . -name  "*string*" -type f -o -name "*string*" -type d

これは次のように計算されます

find . (-name  "*string*" -type f) -o (-name "*string*" -type d)

構文の詳細を見つける

-name "*string*"文字列を含む名前を検索stringします。


1

GNU findを使用している場合は、次の解決策が適している可能性があります。

find -type d,f

詳細についてはman find、以下を参照してください。

一度に複数のタイプを検索するには、コンマで区切ったタイプ文字の組み合わせリスト,(GNU拡張子)を指定できます。


2
GNU findバージョン4.7.0 を使用しています。はサポートされていないようです,。エラーメッセージには次のように記載されていますfind: Arguments to -type should contain only one letter.
alpha_989
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.