[英]Rename file directories recursively using bash on windows
├── 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
所以我在下面跑命令
for i in */src/controllers/;
do mv $i /Controllers/;
done
以下是我面临的错误
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
请协助指出我在实施中出错的地方
由于mv $i /Controllers/
中的前导/
您将每个$i
移动到同一个目录,即文件系统最顶部名为Controllers
的目录。
cd
进入每个目录并使用相对路径( cd "$i/.."; mv "$i" Controllers; cd -
)或使用 bash 的参数扩展修改路径:
for i in */src/controllers/; do
mv "$i" "${i/\/c/\/C}"
done
${i/\/c/\/C}
将第一个/c
替换为/C
。
如果您安装了GNU parallel
,您可以尝试:
find . -regextype posix-extended -regex '.*/(controlers|models|traits|views)' |
parallel echo mv {} {= 's[(.*/)(.+)][${1} . ucfirst($2)]e' =}
如果预期结果,请删除echo
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.