我想找到最后一个子目录名为的所有目录文档,然后将它们重命名为医生。怎样才能改名呢?
我有第一部分:
find -type d -name 'doc'
它返回目录路径,例如:
./foo/bar/doc
答案1
find . -depth -type d -name doc -exec sh -c 'mv "${0}" "${0%/doc}/Doc"' {} \;
答案2
答案3
如果您的目的是将目录大写并且您正在使用bash
4+,则应该这样做:
find . -type d -name doc -print0 \
| while read -rd $'\0' file; do
dname=$(dirname "$file")
fname=$(basename "$file")
mv "$file" "$dname"/"${fname^}"
done
请注意使用\0
以确保正确处理不寻常的文件名。
更新
作为jw013评论中指出${var^}
并没有像我预期的那样工作。我修改了答案,将路径分隔为目录和文件名,并将运算^
符仅应用于$fname
.
顺便说一句,谢谢匆忙用于添加缺少的管道。