ディレクトリ内のすべてのファイルを名前で検索して、ファイルのコンテンツをシェルに出力しようとしています。
現在、ファイルのリストのみを取得しています
find -name '.htaccess' -type f
./dir1/.htaccess
./dir23/folder/.htaccess
...
しかし、どうすればコンテンツを出力する代わりに各ファイルを使用できます。 ファイル名をcat
-コマンドにパイピングするようなものを考えました。
cat
の-exec
述語内でfind
を使用します。
find -name '.htaccess' -type f -exec cat {} +
これにより、ファイルの内容が次々に出力されます。
find
(man find
)。
-exec utility [argument ...] ; True if the program named utility returns a zero value as its exit status. Optional arguments may be passed to the utility. The expression must be terminated by a semicolon (``;''). If you invoke find from a Shell you may need to quote the semicolon if the Shell would otherwise treat it as a control operator. If the string ``{}'' appears anywhere in the utility name or the arguments it is replaced by the pathname of the current file. Utility will be executed from the directory from which find was executed. Utility and arguments are not subject to the further expansion of Shell patterns and constructs. -exec utility [argument ...] {} + Same as -exec, except that ``{}'' is replaced with as many pathnames as possible for each invocation of utility. This behaviour is similar to that of xargs(1).
だから、-exec
スイッチ。
find -type f -name '.htaccess' -exec cat {} +