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