我希望重命名名称以RR开头并且没有自己的子目录的所有子目录为'A'
答案 0 :(得分:1)
在bash中,如果一个glob通配符与任何东西不匹配,它只会打印通配符本身,例如:如果/somedir/
没有任何子目录,则展开后 <{em> /somedir/*/
的文字等同于'/somedir/*/'
。
因此,一个简单的bash脚本可以找到没有子目录且名称以RR
开头的所有目录
#!/bin/bash
shopt -u nullglob
while read -r dir; do
[[ $(echo "$dir"/*/) == "$dir/*/" && ${dir##*/} =~ ^'RR' ]] && echo "$dir"
done < <(find . -type d)
应该很容易从那里进行插值,但是当我们有多个符合您条件的目录并且不能将它们全部重命名为A
时,不清楚您想要做什么?
要将RRetcetc
等目录重命名为A
,只需将其更改为以下内容
#!/bin/bash
shopt -u nullglob
while read -r dir; do
[[ $(echo "$dir"/*/) == "$dir/*/" && ${dir##*/} =~ ^'RR' ]] && mv -v "$dir" "${dir%/*}/A"
done < <(find . -type d)
但请注意,这并未考虑在同一目录中匹配^ RR的多个目录。