bash 用于从包含 *.jar 和 *.pom 的多个目录中删除 *.pom 文件的脚本

bash script to Remove *.pom file from multiple directories which contains *.jar and *.pom aswell

Linux 系统中的多个目录包含*.jar 和*.pom 文件。但是,某些目录仅包含 *.pom 文件。我正在尝试删除但无法删除

使用下面的脚本,它从所有包含 *.jar 的目录中删除所有 *.pom 文件。

#!/bin/sh
sudo find /var/opt/jfrog/artifactory/2021*/repositories/ -type f \( -name "*.pom" \) -exec rm {} \;

我试图从如下所示的 pic 目录结构中仅删除 *.pom 文件。 目录结构

不是直接 运行ning rm,而是 运行 一个检查 jar 文件并仅在没有 pom 文件时删除 pom 的脚本=12=]。这里我们使用 -execdir 来使这更容易和更有效:

find ... -type f -name '*.pom' -execdir bash -c \
'compgen -G \*.jar > /dev/null || rm "$@"' . {} +

我会编码:

#!/bin/bash
find /var/opt/jfrog/artifactory/2021*/repositories/ -name '*.pom' |
while IFS= read -r file; do
    if [ ! -f ${file%.pom}.jar ] ; then rm $file ; fi
done

解释:find 将所有 .pom 文件发送到 while 循环。对于每个 .pom 文件,循环检查相应的 .jar 文件是否不存在,在这种情况下,它会删除 .pom 文件。