如果文件在以前的目录中,请删除其他同名不带扩展名的文件目录



>我有一个问题。我在/root/tmp/despliegue/webapps 中有扩展名为 .war 的文件,我想删除/usr/share/tomcat6/webapps 中没有扩展名的同名目录

我已经用以下方式标记了不带后缀的名称:

for entry in /root/tmp/despliegue/webapps/* ; do basename $entry .war ; done

我需要删除输出上一个循环...像这样的人。

for entry in /root/tmp/despligue/webapps/* ; do rm -rf /usr/share/tomcat6/webapps`basename $entry  .war`; done

谢谢你们。

对不起,我的英语很差。

您只想遍历扩展名为 .war 的文件,因此您应该使用 *.war 而不是 *

for entry in /root/tmp/despligue/webapps/*.war; do 
   rm -rf "/usr/share/tomcat6/$(basename "$entry" .war)"
done

您的问题说您在/root/tmp/despliegue/中有 .war 文件,但您的代码说它们存储在 /root/tmp/despliegue/webapps/ 中。另外,问题说目录在/usr/share/tomcat6/webapps/,但是您的代码使用/usr/share/tomcat6/

您可以使用 bash 通配符

通配符仅列出以 .war 结尾的文件,然后使用 ${variable%.*} 进行参数扩展,以删除最短的匹配后缀(即删除最后一个句点的所有内容并返回剩余的内容)

for entry in /root/tmp/despligue/webapps/*.war; do [[ -f $entry && -d "${entry%.*}" ]] && rm -rf "${entry%.*}"; done

请注意,上述还检查:

  • $entry是常规文件(不是符号链接或目录);
  • ${entry%.*}在尝试删除它之前是一个有效的目录。

相关内容

  • 没有找到相关文章

最新更新