Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 重命名名称以RR开头的叶细分曲面_Shell_Unix_Terminal_Ocaml_Bash - Fatal编程技术网

Shell 重命名名称以RR开头的叶细分曲面

Shell 重命名名称以RR开头的叶细分曲面,shell,unix,terminal,ocaml,bash,Shell,Unix,Terminal,Ocaml,Bash,我希望将所有名称以RR开头且没有自己子目录的子目录重命名为'A',如果全局通配符与任何内容都不匹配,则只打印通配符本身,例如,如果/somedir/没有任何子目录,然后在扩展之后,/somedir/*/就相当于'/somedir/*/' 因此,可以使用一个简单的bash脚本来查找所有没有子目录且名称以RR开头的目录 #!/bin/bash shopt -u nullglob while read -r dir; do [[ $(echo "$dir"/*/) == "$dir/*/" &

我希望将所有名称以RR开头且没有自己子目录的子目录重命名为'A'

,如果全局通配符与任何内容都不匹配,则只打印通配符本身,例如,如果
/somedir/
没有任何子目录,然后在扩展之后,
/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)

但请再次注意,这并不考虑同一目录中与^RR匹配的多个目录

为什么会出现
ocaml
标记?困难的部分是识别哪些目录是叶节点;其余的则相当直截了当。如果您不必担心目录名中的换行符,
sort-r
会在包含子目录的目录之前为您提供子目录;
find-depth
也是这样。我希望在OCaml中找到一个解决方案,但我愿意接受任何东西。这种尝试给了我一个非法的选择——m,有什么想法吗?find-mindepth 2-maxdepth 2-type d |而read dir;执行mv-T“$dir”
dirname“$dir”
/
basename“$dir”| sed“s/[rR].$/MIC_A/i”
”;doneI在sh fix.sh fix.sh中得到一个错误:第6行:意外标记附近的语法错误
我指望没有任何其他R文件夹,但这不是真正的错误plan@JamHam确保您以
/bin/bash scriptname
而不是
/bin/sh scriptname
的形式运行它,我也尝试过/bin/bash../fix.sh,但没有给出错误,但也不打印任何东西。奇怪。您肯定在一个名为“RR…”的子目录中,而这些子目录没有自己的子目录?
#!/bin/bash

shopt -u nullglob 
while read -r dir; do
  [[ $(echo "$dir"/*/) == "$dir/*/" && ${dir##*/} =~ ^'RR' ]] && mv -v "$dir" "${dir%/*}/A" 
done < <(find . -type d)