현재 및 하위 디어의 모든 파일을 명령 인수로 어떻게 추가합니까?
-
11-09-2019 - |
문제
다음과 같은 디렉토리가 있습니다.
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
이러한 제한 사항을 해결하십시오.