find . -name "*.html" -exec grep -l somethingtobefound {} \;
"-name" "-exec" "-l" "{}" "\" および ";"キーワードが何を意味するのか気になります。
また、多くの状況で単一ダッシュ「-」の代わりにダブルダッシュ「--」が使用される場合もよくあります。互いを変えて使えるのか、そしてその意味が何なのか知りたいです。ありがとうございます!
答え1
これはバッシュの問題ではありません。それ自体- このコマンドのすべてはUnix find(1)コマンドの一連の引数で、どのシェルから呼び出されても同じように機能します。
これを考えると、実際にやるべきことはfind(1)のドキュメントをチェックすることです。以下を実行してこれを実行できます。
$ man find
または、findバージョンがGnuバージョン(Linuxを実行している場合はGnuバージョン)の場合、
$ info find
もっと本のような文書のために。
2番目の質問:多くのコマンド(特にGnuプロジェクトに属するコマンド)は、次の形式の長いオプションフラグを使用します。
$ command --long-argument --other-long-argument
公式の短い主張の代わりとして
$ command -lo
または
$ command -l -o
。これを実行するコマンドは、対応するフラグの先頭に「-」の代わりに「--」を使用して、どのタイプのオプションフラグが表示されるかを明確にします。
答え2
このコンテキストでは、「.html」で終わる結果を見つけるために結果をフィルタリングするようにコマンドに-name
指示し、結果と共に実行するようにコマンドに指示します。find
-exec
find
grep
-l
コマンドに適用され、grep
パターン(たとえば)に一致する最初の入力ファイルのファイル名を印刷し、スキャンを停止する必要があることを示します。そのページsomethingtobefound
によると、現在のファイルのパス名を渡してコマンドを終了する必要があります。man
{}
find
\;
デュアルダッシュとシングルダッシュの場合、これはプログラムによって異なり、特別な意味を持たないはずです。つまり、通常、長いパラメータ(例--show-results
)と単一文字パラメータ(例)の前に二重ダッシュが表示される傾向があります-s
。
答え3
答えはman findを通して見つけることができます。
`
-name pattern
Base of file name (the path with the leading directories
removed) matches shell pattern pattern. The metacharacters
('*', '?', and '[]') match a '.' at the start of the base name
(this is a change in findutils-4.2.2; see section STANDARDS CON‐
FORMANCE below). To ignore a directory and the files under it,
use -prune; see an example in the description of -path. Braces
are not recognised as being special, despite the fact that some
shells including Bash imbue braces with a special meaning in
shell patterns. The filename matching is performed with the use
of the fnmatch(3) library function. Don't forget to enclose
the pattern in quotes in order to protect it from expansion by
the shell.
-exec command ;
Execute command; true if 0 status is returned. All following
arguments to find are taken to be arguments to the command until
an argument consisting of ';' is encountered. The string '{}'
is replaced by the current file name being processed everywhere
it occurs in the arguments to the command, not just in arguments
where it is alone, as in some versions of find. Both of these
constructions might need to be escaped (with a '\') or quoted to
protect them from expansion by the shell. See the EXAMPLES sec‐
tion for examples of the use of the -exec option. The specified
command is run once for each matched file. The command is exe‐
cuted in the starting directory. There are unavoidable secu‐
rity problems surrounding use of the -exec action; you should
use the -execdir option instead.
など。
答え4
パラメータ-name
と-exec
は、「検索するファイルまたはディレクトリ名パターン」と「実行」を示します。何一致する各結果ファイルまたはディレクトリでは、「.」はパターンと一致{}
する結果に置き換えられるため、ステートメントでそれをコマンドを実行するための引数として使用できます。バックスラッシュはfindコマンドの終わりを示します。デュアルダッシュは通常長いオプションです。を示します(たとえば、および単一のダッシュは短いオプション(たとえば、まったく同じ意味を持つ)を示します。-name
-exec
\;
--
ls --all
-
ls -a