从文件名重命名文件夹 [脚本]

亚历山德鲁

我想用里面的单个文件的名称重命名每个文件夹。例子:

Folder1/AAA.jpg
Folder2/BBB.jpg
FOlder3/CCC.jpg
Folder4/05.02.2019.jpg

to

AAA/AAA.jpg
BBB/BBB.jpg
CCC/CCC.jpg
05.02.2019/05.02.2019.jpg

在 Windows 中,我可以在一个简单的文件批处理中使用此脚本执行此操作:

for /d %%a in (*) do (
  for %%b in ("%%a\*.jpg","%%a\*.png") do (
     ren "%%a" "%%~nb"
  )
)

在 Ubuntu 中,我尝试过,但也许我写的语法错误。你能帮助我吗?

pa4080

这是几乎类比的 bash 脚本:

#!/bin/bash
for i in Folder*/*
do
    FILE="$(basename "$i")"
    mv "$(dirname "$i")" "${FILE%.*}"
done

用法示例:

$ tree
.
├── Folder1
│   └── some name.png
└── Folder2
    └── 03.02.2019.jpg

2 directories, 2 files

$ for i in Folder*/*; do FILE="$(basename "$i")"; mv "$(dirname "$i")" "${FILE%.*}"; done

$ tree
.
├── 03.02.2019
│   └── 03.02.2019.jpg
└── some name
    └── some name.png

2 directories, 2 files

如果您需要检查扩展名jpg还是png

#!/bin/bash
for i in Folder*/*
do
    if [[ $i =~ (jpg|png)$ ]]
    then
        FILE="$(basename "$i")"
        mv "$(dirname "$i")" "${FILE%.*}"
    fi
done

您可以使用*/*代替来消除目录名称的限制Folder*/*您也可以修改相关行以echo mv "$(dirname "$i")" "${FILE%.*}"进行试运行测试。

进一步阅读:

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

需要一个重命名脚本来剥离文件名并以增量方式添加文件夹名称

用于存档文件夹和重命名文件的脚本

使用批处理脚本重命名文件夹

仅使用批处理脚本重命名文件夹

使用Shell脚本重命名文件名

如何还原由脚本重命名的文件名

如果文件夹为空,则重命名文件夹的脚本

Python脚本递归重命名文件夹和子文件夹中的所有文件

Powershell脚本获取具有文件夹的文件名和文件大小的csv文件

Shell脚本从其父文件夹名称重命名多个文件

Bash,如何从脚本重命名几个文件夹中的文件?

如何使用批处理脚本重命名多个文件夹和子文件?

从文件夹名称重命名文件的Bash脚本问题

用于重命名子文件夹中文件的批处理脚本

使用脚本任务重命名文件夹中的多个 .docx 文件

脚本重命名文件名中包含 08 或 09 的文件失败

重命名文件,删除文件名bash脚本的一部分

如何在文件上传脚本中重命名图像文件名?

将文件夹及其子文件夹中的所有文件名写入CSV文件的脚本

监视文件夹并复制到新文件夹并重命名的PS脚本

重命名脚本会覆盖文件名的一部分,而不是在文件名之前

将文件名插入多个子文件夹中的文件的批处理脚本

批量移动匹配文件名的文件到 C# 中的文件夹或使用脚本

Ubuntu脚本重命名文件夹中的所有图像

Photoshop重命名脚本不会遍历文件夹中的图层

使用node.js脚本重命名文件名的一部分

使用重命名递归替换文件名(而不是目录)中无效字符的脚本

重命名脚本以在 debian 中调整文件名中的某些模式

如何重命名文件夹中的文件名?