父文件夹末尾附加子目录名称
分隔符为下划线_
:
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命令。