'find'출력에서 여러 파일을 여는 방법은 무엇입니까?


10

디렉토리에서 찾은 여러 파일을 다음과 같이 열 수 있다는 것을 알고 있습니다.

find -name *.foo -xargs <command> {} \;

이것은 작동하지만 동시에 gedit에서 많은 텍스트 파일을 열려고하면 연속적으로 열립니다 (하나의 파일이 닫히면 다음 파일이 열립니다).

모든 파일을 동시에 열고 싶습니다. 어떻게하면 되나요?

답변:


15

으로 여러 파일을 한 번 find에 처리하려면 다음 +대신 사용하십시오 \;.

find . -name '*.foo' -exec gedit {} +

또는 당신이 넣을 경우 ≥4 떠들썩한 파티와 zsh을 가진 shopt -s globstar당신의 ~/.bashrc, 당신이 사용할 수있는 **/서브 디렉토리로 재귀 할 :

gedit **/*.foo

Zsh에는 또한 대부분의을 대체 할 수있는 많은 glob 한정자 가 있습니다 find.


누군가 Mac OS X에서 실행하는 방법을 제안 할 수 있습니까?
andilabs '

@andi 혼자서 해결했습니다. 그러나 누군가가 더 짧은 것을 제안하거나 SublimeText를 창이 아닌 별도의 탭에서 열도록 강요하면 훨씬 치명적입니다.
andilabs '11

@andi 이것은 SublimeText의 문제이므로 별도의 스레드로 요청해야합니다.
Gilles 'SO- 악의를 그만두십시오

어쨌든 나는 그것이 정확한 bash 형식에 관한 것이라고 생각합니다. 예를 들어 실행하면 open -a SublimeText admin.py forms.py두 개의 탭이있는 하나의 창에서 열립니다.
andilabs '11

2

Mac OS X bash에서는 다음과 같이 실행할 수 있습니다.

for file in $(find . -name "*.py"); do open -a SublimeText $file; done. 

한 가지 단점은 새 탭을 사용하는 대신 Sublime의 새 창에서 열립니다.


0

이 경우에는

find ./ -name \*.foo | xargs gedit

1
파일 이름에 특수 문자 (공백 또는 \'") 가 포함되어 있으면 xargs입력 find되지 않는 방식으로 입력을 인용해야 하기 때문에 작동하지 않습니다. 사용 find … -print0 | xargs -0 …하거나 더 간단한 것을 사용하십시오 find … -exec … {} +.
Gilles 'SO- 악마 그만해'11

또한이 경우에는 적용되지 않지만 -print0 | xargs -0stdin이 문제가되어 더 이상 터미널에 연결되지 않는 문제가 있습니다. 텍스트 모드 편집기를 사용하려고하면 문제가됩니다.
derobert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.