如何删除名称附加到其父文件夹名称末尾的子目录

how to delete a sub directory whose name is appended to the end of its parent folder's name

父文件夹包含末尾附加的子目录名称

分隔符为下划线_:

a_b_c  (parent folder contains sub directory name at the end)
  |c/ (to be deleted)
  |..
d_f
  |..
  |f/ (to be deleted)
g_h
  |h/ (to be deleted)
  |..

输出应该是

a_b_c  (parent folder contains sub directory name at the end)
  |..
d_f
  |..
g_h
  |..

我手头的就是获取子目录名

"$PWD" |rev|cut -d"_" -f1|rev  (input: a_b_c output: c)

不确定如何删除子目录。 请帮忙!

遍历目录,使用参数扩展删除最后一个下划线之前的所有内容:

#! /bin/bash
for dir in * ; do
    last=${dir##*_}
    [[ -d $dir/$last ]] && rmdir "$dir/$last"
done
while IFS= read -r -d '' dir;
do 
  if test -d "$dir/${dir#*_*_}";
  then 
       echo "rm -Rf $dir/${dir#*_*_}";
       # rm -Rf "$dir/${dir#*_*_}";
  fi;
done <<< "$(find . -type d -regextype posix-extended -regex "^.*[[:alpha:]]{1}_[[:alpha:]]{1}_[[:alpha:]]{1}$" -print0)"

利用 find 执行正则表达式搜索,仅搜索具有概述模式的目录,将输出重定向回 while 循环,将它们读入变量 dir。然后我们在删除目录路径(如果存在)之前用 ${dir#**} 删除最后一个字符。

在删除要执行的注释标记之前回显删除命令。