다음을 사용하여 프로세스를 처음 테스트했을 때 일부 파일의 내용을 알파벳순(이 경우 날짜 및 반복을 의미함) 순서로 추출하려고 합니다 ls
.
$ find /opt/minecraft/wonders/logs/ -name 20* -type f -mtime -3 -print0 \
| sort | xargs -r0 ls -l | awk -F' ' '{print $6 " " $7 " " $9}'
나는 긍정적인 결과를 얻었습니다:
Aug 18 /opt/minecraft/wonders/logs/2018-08-17-3.log.gz
Aug 18 /opt/minecraft/wonders/logs/2018-08-18-1.log.gz
Aug 19 /opt/minecraft/wonders/logs/2018-08-18-2.log.gz
Aug 19 /opt/minecraft/wonders/logs/2018-08-19-1.log.gz
Aug 20 /opt/minecraft/wonders/logs/2018-08-19-2.log.gz
Aug 20 /opt/minecraft/wonders/logs/2018-08-20-1.log.gz
그러나 실제로 파일을 추출하면 정렬 순서가 손실됩니다.
$ find /opt/minecraft/wonders/logs/ -name 20* -type f -mtime -3 -print0 \
| sort | xargs -r0 gunzip -vc | grep "\/opt.*"`
/opt/minecraft/wonders/logs/2018-08-18-1.log.gz: 66.8%
/opt/minecraft/wonders/logs/2018-08-18-2.log.gz: 83.1%
/opt/minecraft/wonders/logs/2018-08-19-1.log.gz: 70.3%
/opt/minecraft/wonders/logs/2018-08-19-2.log.gz: 72.9%
/opt/minecraft/wonders/logs/2018-08-20-1.log.gz: 73.3%
/opt/minecraft/wonders/logs/2018-08-17-3.log.gz: 90.2%
이러한 파일의 압축을 풀 때 정렬 순서를 어떻게 유지할 수 있나요?
답변1
-print0
with find
및 -0
with options 를 사용했지만 for xargs
사용을 잊어버렸으므로 기본적 으로 줄이 표시됩니다(파일 이름에 포함되어 있지 않은 경우 ). 표시되는 출력은 일부 정렬을 수행하는 중일 수 있습니다.-z
sort
sort
\n
ls
ls
find /opt/minecraft/wonders/logs/ -name '20*' -type f -mtime -3 -print0 |
sort -z | xargs -r0 gunzip -vc | grep /opt
(참고: 20*
glob이며 셸에 대해 인용되어야 하므로 문자 그대로 Wire 에 전달 find
됩니다 .)/
grep
.*