디렉터리의 모든 파일을 이름으로 검색하고 파일 내용을 셸에 출력하려고 합니다.
현재는 파일 목록만 가져옵니다.
find -name '.htaccess' -type f
./dir1/.htaccess
./dir23/folder/.htaccess
...
하지만 내가 어떻게 할 수 있니?출력 내용파일별로 교체합니다. 이런 것을 생각해 보세요.파이프 파일 이름에 cat
-명령.
답변1
술어 cat
내에서 사용됨 :-exec
find
find -name '.htaccess' -type f -exec cat {} +
그러면 파일의 내용이 차례로 출력됩니다.
답변2
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 {} +
답변3
사용하고 싶은 -exec
옵션 find
.
find -name some_pattern -type f -exec cat {} +
그리고 그것이 모두 일반 텍스트이고 하나씩 보고 싶다면 다음 cat
으로 바꾸십시오 less
(또는 view
vim에서).
find -name some_pattern -type f -exec less {} +
보고 편집하려면 vim
또는 emacs
또는 gedit
(원하는 대로) 을 사용하십시오.
find -name some_pattern -type f -exec vim {} +