将多个目录中的文件重命名为目录名称

gis*_*kou 14 linux rename batch-rename

我有这样的事情:

v_1/file.txt
v_2/file.txt
v_3/file.txt
...
Run Code Online (Sandbox Code Playgroud)

我想将这些文件重命名为以下内​​容:

v_1.txt
v_2.txt
v_3.txt
...
Run Code Online (Sandbox Code Playgroud)

在同一目录中.

我想我可以使用,rename但我无法弄清楚如何同时使用它与文件夹和文件重命名.

Csq*_*Csq 24

使用bash for循环可以实现结果mv:

for subdir in *; do mv $subdir/file.txt $subdir.txt; done;
Run Code Online (Sandbox Code Playgroud)

请注意,如果目录名称包含空格,则上述解决方案将不起作用.相关链接.

另一种基于注释的解决方案(适用于名称中也包含空格的目录):

find . -type d -not -empty -exec echo mv \{\}/file.txt \{\}.txt \;
Run Code Online (Sandbox Code Playgroud)