Use cat
dentro do predicado -exec
de find
:
find -name '.htaccess' -type f -exec cat {} +
Isto irá mostrar o conteúdo dos arquivos, um após o outro.
Estou tentando pesquisar todos os arquivos dentro de um diretório pelo nome e exibindo o conteúdo dos arquivos no shell.
Atualmente, estou recebendo apenas uma lista de arquivos
find -name '.htaccess' -type f
./dir1/.htaccess
./dir23/folder/.htaccess
...
Mas como posso produzir o conteúdo de cada arquivo? Pensei em algo como canalizar o nome do arquivo para o cat
-command.
Consulte a página de manual para 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).
Então, apenas coloque a chave na opção -exec
.
find -type f -name '.htaccess' -exec cat {} +
Você provavelmente deseja usar a opção -exec
de find
.
find -name some_pattern -type f -exec cat {} +
Além disso, se todos eles forem texto simples e você quiser visualizá-los um por um, substitua cat
por less
(ou view
do vim)
find -name some_pattern -type f -exec less {} +
Para ver & editar, use vim
ou emacs
ou gedit
(por sua própria opção)
find -name some_pattern -type f -exec vim {} +