Linux 用bash将foldername重命名为filename

Linux 用bash将foldername重命名为filename,linux,bash,rename,Linux,Bash,Rename,我想使用文件夹名重命名文件 这: ├── foo01 │   └── bar.png │   └── bar.txt ├── foo02 │   └── bar.png │   └── bar.txt └── foo03 └── bar.png    └── bar.txt 应该是这样的: ├── foo01 │   └── foo01.png │   └── foo01.txt ├── foo02 │   └── foo02.png │   └── foo02.txt └── fo

我想使用文件夹名重命名文件

这:

├── foo01
│   └── bar.png
│   └── bar.txt
├── foo02
│   └── bar.png
│   └── bar.txt
└── foo03
    └── bar.png
    └── bar.txt
应该是这样的:

├── foo01
│   └── foo01.png
│   └── foo01.txt
├── foo02
│   └── foo02.png
│   └── foo02.txt
└── foo03
    └── foo03.png
    └── foo03.txt

我找不到这样做的方法。有人能帮忙吗?

使用Perl的独立重命名命令:

rename -n 's|([^/]*)/[^/]*\.(.*)$|$1/$1.$2|' */*
输出:

foo01/bar.png renamed as foo01/foo01.png foo01/bar.txt renamed as foo01/foo01.txt foo02/bar.png renamed as foo02/foo02.png foo02/bar.txt renamed as foo02/foo02.txt foo03/bar.png renamed as foo03/foo03.png foo03/bar.txt renamed as foo03/foo03.txt foo01/bar.png重命名为foo01/foo01.png foo01/bar.txt重命名为foo01/foo01.txt fooo2/bar.png重命名为fooo2/fooo2.png fooo2/bar.txt重命名为fooo2/fooo2.txt foo03/bar.png更名为foo03/foo03.png foo03/bar.txt重命名为foo03/foo03.txt
如果一切正常,请删除选项
-n

到目前为止您尝试了什么?有关批量重命名,请参见此:请显示您的代码。由于堆栈溢出对您隐藏了关闭原因:寻求调试帮助的问题(“为什么此代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。我使用
s | regex | string |
将path和filename元素转换为新字符串。语法与
sed
s
命令非常相似。谢谢,这很有帮助。我必须使用相同的语法进行重命名(而不是prename),而且一切正常。200个文件被重命名:)