linux 如何在bash中重命名所有目录中的文件?[duplicate]

mxg2im7a  于 2023-03-07  发布在  Linux
关注(0)|答案(2)|浏览(147)
    • 此问题在此处已有答案**:

Recursively change file extensions in Bash(6个答案)
4天前关闭。
我有一个脚本,将所有文件从. txt重命名为.txt2。我想做同样的事情,但在所有子目录。
这是我的准则。

rename 's/.txt/.txt2' *.txt
oprakyz7

oprakyz71#

使用Perl的rename时如下所示:

shopt -s globstar # bash specific, enabled by default in `zsh`
rename 's/\.txt$/\.txt2/' ./**/*.txt
k2arahey

k2arahey2#

我找到答案了,但几乎读不懂。

for filePath in $(find . -name "*.txt"); do filePathWithoutExtension=$(echo ${filePath} | head -c -4) && mv ${filePath} ${filePathWithoutExtension}txt2; done

之前:

tree
.
├── folder1
│   ├── foo.txt
│   ├── subfolder1
│   │   └── foo.txt
│   └── subfolder2
│       └── foo.txt
├── folder2
│   └── foo.txt
└── foo.txt

4 directories, 5 files

之后:

tree
.
├── folder1
│   ├── foo.txt2
│   ├── subfolder1
│   │   └── foo.txt2
│   └── subfolder2
│       └── foo.txt2
├── folder2
│   └── foo.txt2
└── foo.txt2

4 directories, 5 files

相关问题