Regex 选择前导为“的文件夹(非文件)”_&引用;(下划线)终端中的符号

Regex 选择前导为“的文件夹(非文件)”_&引用;(下划线)终端中的符号,regex,bash,unix,sh,mv,bash4,Regex,Bash,Unix,Sh,Mv,Bash4,我正在尝试在给定目录中运行带有前导下划线的文件夹和子文件夹(只有,不能更改任何文件),并删除这些前导下划线。我计划用一个简单的shell脚本来实现这一点: for folder in ./_* do mv "$folder" "${folder:1}" done 由于两个原因,上面的脚本还不能正常工作,我在这里试图纠正这两个原因: -首先,“/*”不能正常工作,要么抛出错误(/*:没有这样的文件或目录),要么选择没有前导下划线的文件夹。 -第二,它不只是指定文件夹……是否有一个选项可供mv

我正在尝试在给定目录中运行带有前导下划线的文件夹和子文件夹(只有,不能更改任何文件),并删除这些前导下划线。我计划用一个简单的shell脚本来实现这一点:

for folder in ./_* do
  mv "$folder" "${folder:1}"
done
由于两个原因,上面的脚本还不能正常工作,我在这里试图纠正这两个原因: -首先,“/*”不能正常工作,要么抛出错误(
/*:没有这样的文件或目录
),要么选择没有前导下划线的文件夹。 -第二,它不只是指定文件夹……是否有一个选项可供
mv
命令使用


感谢查找以下划线开头的所有文件夹使用此
查找

find . -type d -name '_*'
要删除
请使用:

find . -type d -name '_*' -exec bash -c 'f="$1"; mv "$f" "${f:1}" - {} \;
递归使用:

shopt -s globstar

for dir in **/_*/; do
    mv "$dir" "${dir:1}"
done

注意模式中的尾随
/
,这是从结果中过滤出非目录的内容。