如何在保持文件扩展名的同时将目录中的文件重命名为其各自的目录名称?

输入者42

我在当前目录中有一堆不同名称的目录:

Hello World/
Dr. Dre - Still Dre/
Angry Birds/
2018 Grand Prix Race Highlights/

并且在每个目录中都有文件(分别为一个):

source.c
song.aac
setup.apk
spanish.mp4

我想将每个文件重命名为它们的目录名,但扩展名不应更改。示例输出文件:

Hello World.c
Dr. Dre - Still Dre.aac
Angry Birds.apk
2018 Grand Prix Race Highlights.mp4

输出位置无关紧要。

我找到了很多用于在当前目录中重命名文件的解决方案for file in *mv "$file" "${file/oldname/newname}"但我的文件位于 1 级深的子目录中,所以我目前拥有的是:

currdir=$(pwd)
for dir in */
do
  cd ${dir}
  file=$(echo *)
  ext=${file##*.}
  mv "*" "${dir}.${ext}"
  cd ${currdir}
done

我正在使用 zsh,当我尝试运行此函数时zsh: source.c not found,我怀疑该行可能有问题file=$(echo *)我也不喜欢我在那里所做的事情的复杂性,所以也许有一种更清洁的方法,甚至是单行的。我只是想用这些已经默认在Ubuntu安装,如命令mvfindsedvimgrep,等的目录名可能有这样的符号字符$&.,等。因此,请同时容纳怪异的名字。

斯蒂芬·查泽拉斯

我只会做:

autoload zmv
zmv '(*)/(*)(.*)' '$1$3'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

对于目录,将具有子目录名称+旧文件名的子目录中的文件重命名为新目录

重命名目录名称中包含扩展名的树中文件

以递归方式将输出 PDF 文件重命名为子目录名称 Powershell

如何在终端上将所有目录中的文件重命名为相同的名称

将子目录中的pdf文件重命名为子目录的名称

C#将文件重命名为与其他目录中的文件相同的名称

使用父目录名称重命名多个不同名称和扩展名的文件

重命名目录中的所有文件,同时保留任何文件扩展名

以静默方式将Windows 8中的用户配置文件目录名重命名为正确的用户名?

在终端中将文件重命名为父目录的名称

在目录中以目录名称格式YYYY-MM-DD获取扩展名为.JPG的文件

如何在php中解析文件名并重命名为某个名称

将文件重命名为子目录

遍历子目录,并将给定扩展名的所有文件重命名为相同的文件名

如何获取目录树中具有特定文件扩展名的每个文件的目录名称?

linux中将文件重命名为父目录名的一部分

如何在Linux / Unix中将多个文件从一个扩展名重命名为另一个扩展名?

如何递归地将目录树重命名为有效的 Windows 文件名?

如何在不更改扩展名的情况下重命名目录中的许多文件?

使用find命令将文件重命名为不带扩展名的相同文件名

如何在使用bash更改文件名和扩展名的同时将多个文件移动到目录中?

我如何重命名目录中的文件,同时保持部分名称不变?

将目录中的所有文件从$ filename_h重命名为$ filename_half?

PHP:以递归方式将目录中的所有文件重命名为小写

如何重命名所有文件以包含目录名称?

如何使用目录名称重命名文件?

如何使用 exiftool 将文件重命名为 CSV 导入文件中包含的新名称