web-dev-qa-db-ja.com

シェルでファイルとエコーコンテンツを検索する

ディレクトリ内のすべてのファイルを名前で検索して、ファイルのコンテンツをシェルに出力しようとしています。

現在、ファイルのリストのみを取得しています

find -name '.htaccess' -type f


./dir1/.htaccess
./dir23/folder/.htaccess
...

しかし、どうすればコンテンツを出力する代わりに各ファイルを使用できます。 ファイル名cat-コマンドにパイピングするようなものを考えました。

2
pbaldauf

cat-exec述語内でfindを使用します。

find -name '.htaccess' -type f -exec cat {} +

これにより、ファイルの内容が次々に出力されます。

6
heemayl

findman 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 {} +
2
Christopher