特定の拡張子を持つファイルを見つけようとしています。たとえば、Robertという名前のすべての.pdfファイルと.jpgファイルを検索したい
私はこのコマンドを実行できることを知っています
$ find . -name '*.h' -o -name '*.cpp'
ただし、拡張子以外にファイル自体の名前を指定する必要があります。ファイル名を何度も書かないようにする方法があるかどうかを確認したいだけです。ありがとうございます。
特定の拡張子を持つファイルを見つけようとしています。たとえば、Robertという名前のすべての.pdfファイルと.jpgファイルを検索したい
私はこのコマンドを実行できることを知っています
$ find . -name '*.h' -o -name '*.cpp'
ただし、拡張子以外にファイル自体の名前を指定する必要があります。ファイル名を何度も書かないようにする方法があるかどうかを確認したいだけです。ありがとうございます。
inameまたはname何を見つけたいかによって異なります。私は事件が不可欠な状況にありました。
回答:
私の好み:
find . -name '*.jpg' -o -name '*.png' -print | grep Robert
find -exec ...
jpgまたはpngその一部としてはうまく機能しません。
findの-regex引数の使用:
find . -regex '.*/Robert\.\(h\|cpp\)$'
または単に使用する-name:
find . -name 'Robert.*' -a \( -name '*.cpp' -o -name '*.h' \)
で-regexオプションを使用する代わりにfind、質問にラベルが付けられているためbash、ブレース拡張メカニズムを使用できます。
eval find . -false "-o -name Robert".{jpg,pdf}
evalまたはを忘れたか、より複雑なもののエイリアスであるか、LinuxのバージョンでストックGNUを使用していない可能性があります。.findfind
findサポートしていません-false。私はこれを回避するために、相互に排他的な2つの条件を与えて、それらがまとめて偽になるようにしました-inum 1 -inum 2。
このq / aは、正規表現でfindを使用する方法を示しています。findコマンドでregexを使用する方法は?
パターンは次のようなものである可能性があります
'^Robert\\.\\(h|cgg\\)$'
スクリプトとして使用できるもの:
find "${2:-.}" -iregex ".*${1:-Robert}\.\(h\|cpp\)$" -print
findccとして使用します
findcc [name] [[search_direcory]]
例えば
findcc # default name 'Robert' and directory .
findcc Joe # default directory '.'
findcc Joe /somewhere # no defaults
使用できないことに注意してください
findcc /some/where #eg without the name...
また、代わりに、あなたは使用することができます
find "$1" -print | grep "$@"
そして
findcc directory grep_options
お気に入り
findcc . -P '/Robert\.(h|cpp)$'
iname代わりに使用する必要があります。大文字と小文字は区別されません。