나는 이것과 비슷한 이름을 가진 수천 개의 unl 파일을 가지고 있습니다 cbs_cdr_vou_20180624_603_126_239457.unl
. 다음 명령을 사용하여 이 파일의 모든 줄을 인쇄하고 싶습니다. 하지만 파일 이름만 알려줍니다. 파일 이름은 필요하지 않으며 이 파일의 내용만 있으면 됩니다.
find -type f -name 'cbs_cdr_vou_20180615*.unl' > /home/fifa/cbs/test.txt
현재 출력:
./cbs_cdr_vou_20180615_603_129_152023.unl
./cbs_cdr_vou_20180615_603_128_219001.unl
./cbs_cdr_vou_20180615_602_113_215712.unl
./cbs_cdr_vou_20180615_602_120_160466.unl
./cbs_cdr_vou_20180615_603_125_174428.unl
./cbs_cdr_vou_20180615_601_101_152369.unl
./cbs_cdr_vou_20180615_603_133_193306.unl
예상 출력:
8801865252020|200200|20180613100325|;
8801837463298|200200|20180613111209|;
8801845136955|200200|20180613133708|;
8801845205889|200200|20180613141140|;
8801837612072|200200|20180613141525|;
8801877103875|200200|20180613183008|;
8801877167964|200200|20180613191607|;
8801845437651|200200|20180613200415|;
8801845437651|200200|20180613221625|;
8801839460670|200200|20180613235936|;
cat 명령의 경우 오류가 발생하므로 명령 대신 -bash: /bin/logger: Argument list too long
사용하고 있습니다 .find
cat
답변1
이 find
유틸리티는 경로 이름을 처리합니다. find
발견된 경로 이름에 대한 특정 작업이 명령에 언급되지 않은 경우 기본 작업은 해당 경로를 출력하는 것입니다.
cat
-exec
다음 명령을 추가하여 찾은 경로 이름에 대해 작업을 수행 할 수 있습니다 find
.
find . -type f -name 'cbs_cdr_vou_20180615*.unl' -exec cat {} + >/home/fifa/cbs/test.txt
이것은 주어진 패턴과 일치하는 이름을 가진 현재 디렉토리 안이나 아래의 모든 일반 파일을 찾습니다. 가능한 가장 큰 배치의 경우 cat
파일 내용을 연결하기 위한 호출이 수행됩니다.
출력은 /home/fifa/cbs/test.txt
.
관련된:
답변2
출력에서는 find
관련 파일 이름을 생성합니다.
출력을 |
각 파일에 대해 실행될 명령으로 파이프( )할 수 있습니다.xargs cat
cat
예를 들어:
find -type f -name 'cbs_cdr_vou_20180615*.unl' | xargs cat > /home/fifa/cbs/test.txt
또 다른 옵션은 다음을 사용하는 것입니다.-exec cat
find -type f -name 'cbs_cdr_vou_20180615*.unl' -exec cat {} \; > /home/fifa/cbs/test.txt