문제

다음과 같은 디렉토리가 있습니다.

dir
dir/somefile.txt
dir/subdir/subsub/somefile2.txt
dir/subdir2/somefile.txt

그리고 모든 하위 디렉토리의 모든 파일을 단일 인스턴스의 명령으로 열고 싶습니다. -exec 또는 xargs에서 찾으려고했지만 별도의 명령 인스턴스로 각 파일을 열었습니다.

기본적으로, 나는 같은 것을 원한다kate dir/somefile.txt dir/subdir/subsub/somefile2.txt dir/subdir2/somefile.txt, 그러나 여러 하위 디렉토리에있는 파일의 수에 대해. Bash를 사용하고 있지만 모든 대본 제안은 괜찮습니다.

설명 : 나는 단지 .txt 파일을 의미하는 것이 아니라 모든 ascii 파일 (예 : .php, .txt, .html 등)을 의미합니다.

도움이 되었습니까?

해결책

노력하다

kate `find . -name \*.txt -type f`

어디에 -type f 디렉토리를 치는 것을 방지합니다.

다음은 사용하는 예입니다 ls -1 대신에 kate:

edd@ron:~/src/debian/R$ ls -1 `find . -type f -name \*.txt`
./R-2.10.0/src/extra/graphapp/readme.txt
./R-2.10.0/src/extra/xdr/copyrght.txt
./R-2.10.0/src/extra/xdr/README.txt
./R-2.10.0/src/gnuwin32/fixed/etc/rgb.txt
./R-2.10.0/src/gnuwin32/installer/CustomMsg.txt
./R-2.10.0/src/library/grid/inst/doc/changes.txt
./R-2.10.0/src/unix/system.txt
./R-2.9.2-ra-1.2.8/src/extra/graphapp/readme.txt
./R-2.9.2-ra-1.2.8/src/extra/xdr/copyrght.txt
./R-2.9.2-ra-1.2.8/src/extra/xdr/README.txt
./R-2.9.2-ra-1.2.8/src/gnuwin32/fixed/etc/rgb.txt
./R-2.9.2-ra-1.2.8/src/gnuwin32/installer/CustomMsg.txt
./R-2.9.2-ra-1.2.8/src/library/grid/inst/doc/changes.txt
./R-2.9.2-ra-1.2.8/src/unix/system.txt
edd@ron:~/src/debian/R$

그리고 하위 디렉토리의 모든 파일을 정말로 원한다면 호출은 단순화합니다.

kate `find . -type f`

당신이 있다면 dir/ 그렇지 않으면

kate `find dir -type f`

다른 팁

이를위한 몇 가지 가능한 옵션이 있습니다. 이 답변은 Kate가 모든 파일을 열 수 있다는 것을 알고있는 시나리오를 기반으로하며 모든 확장자가있는 파일을 열려고합니다.

find dir -type f -exec kate {} +  

kate $(find dir -type f)

kate `find dir -type f`

두 번째와 세 번째 형태는 거의 동일합니다. 주요 차이점 [1]은 첫 번째 버전이 이름으로 공백을 가진 파일을 처리하고 두 번째와 세 번째 버전은 그렇지 않다는 것입니다.

1] NVRAM을 지적 해 주셔서 감사합니다. 처음으로 답을 게시했을 때는 몰랐습니다.

kate $(find dir -type f)

당신은 그다지 익숙하지 않습니다 xargs, 또는 당신이하려는 것은 그것을 올바르게 사용하지 않습니다. 정확히 문제 Xargs는 해결하도록 설계되었습니다. 임의로 긴 문자열 목록을 주어 주면 가능한 한 적은 수의 실행에서 프로그램에 인수로 전달하면서 프로그램이 수행 할 수있는 인수 수에 대한 시스템 제한을 초과하지 않습니다.

당신이 맞습니다 find ... -exec, 그러나 그것은 또한 고정 될 수 있습니다. 그냥 추가하십시오 + 의 끝에서 find 명령과 Voila, 그것은처럼 행동합니다 xargs.

해당 사용의 솔루션 중 어느 것도 kate $(...) (또는 백티크와 동등한) 일반적으로 작동합니다 (파일 목록이 매우 길면 공간이있는 파일 이름을 지원하지 않으며 전혀 실행되지 않습니다). 둘 다 find ... + 그리고 xargs 이러한 제한 사항을 해결하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top