Bash

如何遞歸重命名子文件夾下的所有md類型文件?

  • March 28, 2019
$ tree .

.
├── tmp1
│   └── acsfd.md
├── tmp2
│   └── adb.md
└── tmp3
   └── aa23aa.md
...
└── tmpn
   └── random.md

要將所有md文件重命名為index.md,

我試過:

find . -name "*.md" -exec mv {} index.md \;

但這將刪除所有文件並在目前文件夾中md創建一個。index.md

在這種情況下,您需要-execdir而不是在包含匹配文件的目錄中-exec執行:mv

$ tree
.
├── tmp1
│   └── rand32726.md
├── tmp2
│   └── rand16097.md
├── tmp3
│   └── rand10683.md
└── tmpn
   └── rand23531.md

4 directories, 4 files
$ find . -iname '*.md' -execdir mv {} index.md \;
$ tree
.
├── tmp1
│   └── index.md
├── tmp2
│   └── index.md
├── tmp3
│   └── index.md
└── tmpn
   └── index.md

4 directories, 4 files

引用自:https://unix.stackexchange.com/questions/509143