首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在windows上使用bash递归地重命名文件目录

在windows上使用bash递归地重命名文件目录
EN

Stack Overflow用户
提问于 2021-03-28 18:43:19
回答 2查看 50关注 0票数 0
代码语言:javascript
复制
├── package-1
│   └── src
│       ├── controllers
│       ├── models
│       |── traits
│       └── views
├── package-2
│   └── src
│       ├── controllers
│       ├── models
│       |── traits
│       └── views
├── package-3
│   └── src
│       ├── controllers
│       ├── models
│       |── traits
│       └── views

我想以递归方式将文件夹controllers重命名为Controllers、models和Models

从各种文章,例如https://askubuntu.com/questions/56326/how-do-i-rename-a-directory-via-the-command-line和帖子中,我可以看到我需要使用rm,所以我运行了以下命令

代码语言:javascript
复制
for i in */src/controllers/; 
  do  mv $i /Controllers/; 
done

下面是我面临的错误

代码语言:javascript
复制
mv: cannot move 'laravel-files/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-guardian-admissions/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-guardians/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-lms/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-permissions-and-roles/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-procurements/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-school-accounts/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-school-curriculum/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-school-exams/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-school-infrastructures/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-school-streams/src/controllers/' to '/Controllers/controllers': Directory not empty

请帮助我指出我在实现中出错的地方。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-28 18:52:16

由于mv $i /Controllers/中的前导/,您可以将每个$i移到完全相同的目录中,即文件系统最顶端的一个名为Controllers的目录。

可以使用cd进入每个目录并使用相对路径(cd "$i/.."; mv "$i" Controllers; cd -),也可以使用bash的参数扩展来修改路径:

代码语言:javascript
复制
for i in */src/controllers/; do
  mv "$i" "${i/\/c/\/C}"
done

${i/\/c/\/C}将第一个/c替换为/C

票数 2
EN

Stack Overflow用户

发布于 2021-03-28 20:00:57

如果您安装了GNU parallel,您可以尝试:

代码语言:javascript
复制
find . -regextype posix-extended -regex '.*/(controlers|models|traits|views)' | 
    parallel echo mv {} {= 's[(.*/)(.+)][${1} . ucfirst($2)]e' =}

如果结果是预期的,则删除echo

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66840565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档