特定の拡張子を持つファイルを見つけようとしています。たとえば、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を使用していない可能性があります。.
find
find
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
代わりに使用する必要があります。大文字と小文字は区別されません。