仅查找+删除以 .index 结尾的文件

仅查找+删除以 .index 结尾的文件

我们在 Red Hat Enterprise Linux 上有一台 Kafka 生产机器。

  1. 我们如何删除/var/kafka/kafka-logs该结尾下的所有文件.index

  2. 我们如何将所有以 结尾的文件移动.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或兼容版本删除所有以.indexunder结尾的文件:/var/kafka/kafka-logsfind

    find /var/kafka/kafka-logs -name \*.index -delete
    

    POSIXly:

    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 {} +
    

    POSIXly:

    find /var/kafka/kafka-logs -name \*.index -exec sh -c '
      exec mv "$@" /var/tmp/INDEX_BACKUP/' sh {} +
    

答案2

广告一:

find /var/kafka/kafka-logs -type f -name "*.index" -exec rm -v {} \;

您可以在这里找到第二个问题的答案:find命令后如何集成mv命令?

答案3

由于 rm 命令的参数较大,这样的命令将运行得更快(与 find / -exec 相比)。这不需要 GNU find。

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并假设不存在数千这些文件的:

  1. rm /var/kafka/kafka-logs/**.index

  2. mv /var/kafka/kafka-logs/**.index /var/tmp/INDEX_BACKUP

    00000000000000000000.index这不会检查目标上的名称是否已存在,因此它可能会覆盖那里的文件(例如,对于示例文件,您最终只会得到文件的单个副本)。

这两个命令都假设globstarshell 选项已在bashusing中设置

shopt -s globstar

这将启用**glob 模式,它将在路径名中匹配 like *but across /

相关内容