Red Hat Enterprise Linux에는 Kafka 프로덕션 머신이 있습니다.
/var/kafka/kafka-logs
해당 엔딩 아래의 모든 파일을 어떻게 삭제합니까.index
?.index
로 끝나는 모든 파일을 어떻게 다른 폴더로 이동할 수 있습니까/var/tmp/INDEX_BACKUP
?
예시 내용은 다음과 같습니다 /var/kafka/kafka-logs
.
./hd3gd.ewhd.pri.processed-98/00000000000000000011.index
./hd3gd.ewhd.pri.processed-99/00000000000000000000.index
./hd3gd.ewhd.suspected_relations-0/00000000000000000000.index
./hd3gd.ewhd.suspected_relations-1/00000000000000000000.index
./hd3gd.ewhd.suspected_relations-2/00000000000000000000.index
./hd3gd.ewhd.suspected_relations-3/00000000000000000000.index
./hd3gd.ewhd.suspected_relations-4/00000000000000000000.index
./hd3gd.ewhd.suspected_relations-5/00000000000000000000.index
./frfwjnwe.fwefew.heartbeat-0/00000000000000000000.index
./frfwjnwe.fwefew.heartbeat-1/00000000000000000000.index
./frfwjnwe.fwefew.heartbeat-1/00000000000000017239.index
./frfwjnwe.fwefew.heartbeat-2/00000000000000000000.index
./frfwjnwe.fwefew.heartbeat-2/00000000000000017238.index
답변1
GNU 또는 호환 버전을 사용하여
.index
다음으로 끝나는 모든 파일을 삭제하세요./var/kafka/kafka-logs
find
find /var/kafka/kafka-logs -name \*.index -delete
POSIX적으로:
find /var/kafka/kafka-logs -name \*.index -exec rm -f {} +
GNU를 사용하여 다른 폴더로 이동하십시오
mv
.find /var/kafka/kafka-logs -name \*.index -exec mv -t /var/tmp/INDEX_BACKUP {} +
POSIX적으로:
find /var/kafka/kafka-logs -name \*.index -exec sh -c ' exec mv "$@" /var/tmp/INDEX_BACKUP/' sh {} +
답변2
광고 1:
find /var/kafka/kafka-logs -type f -name "*.index" -exec rm -v {} \;
두 번째 질문에 대한 답은 여기에서 찾을 수 있습니다.find 명령 다음에 mv 명령을 통합하는 방법은 무엇입니까?.
답변3
rm 명령의 더 큰 매개변수로 인해 이러한 명령은 더 빠르게 실행됩니다(find / -exec와 비교하여). GNU 찾기가 필요하지 않습니다.
Q1.
find /var/kafka/kafka-logs -type f -name "*.index" | xargs rm
Q2.
find /var/kafka/kafka-logs -name "*.index" | xargs -I {} mv {} /var/tmp/INDEX_BACKUP
또한 GNU find는 ACL이나 확장 속성을 지원하지 않으므로 Solaris에서는 GNU find를 사용하고 싶지 않을 것입니다.
답변4
bash
존재하지 않는 것을 사용 하고 가정하십시오.수천다음 파일 중:
rm /var/kafka/kafka-logs/**.index
mv /var/kafka/kafka-logs/**.index /var/tmp/INDEX_BACKUP
00000000000000000000.index
이는 이름이 대상에 이미 존재하는지 확인하지 않으므로 거기에 있는 파일을 덮어쓸 수 있습니다(예를 들어, 예제 파일을 사용하면 파일의 단일 복사본만 남게 됩니다).
두 명령 모두 globstar
쉘 옵션이 다음을 bash
사용하여 설정 되었다고 가정합니다.
shopt -s globstar
**
이렇게 하면 pathnames *
와 유사하게 일치하는 glob 패턴이 활성화됩니다 /
.