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



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

分隔符为下划线_:
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#**}删除最后一个字符。

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

最新更新